【问题标题】:Posting a photo as an open graph facebook page将照片发布为开放图 Facebook 页面
【发布时间】:2012-08-15 04:35:53
【问题描述】:

我的应用程序有许多打开的图形页面。我可以发布这些页面,但照片除外。我收到“PHP 致命错误:未捕获的 OAuthException:请求此资源需要用户访问令牌。”这没有任何意义,因为我可以将页面作为页面发布到提要。

代码如下:

require_once ('facebook.php');

$fb = new Facebook(array(
'appId'  => 'XXX',
'secret' => 'XXX',
));  

$fb->setFileUploadSupport(true);

$args = array('message' => 'Photo Caption');
$args['image'] = '@' . realpath("testpic.jpg");

$data = $fb->api("/PAGEID/photos", "post", $args);

print_r($data);
?>

这可能不需要用户登录吗?我读到您可以以用户身份请求页面 access_token ,但是您可以使用一种方法来验证一个功能,然后用另一种方法来验证另一个功能,这似乎有点愚蠢。如果可能,我想避免用户登录。

【问题讨论】:

标签: php facebook facebook-graph-api


【解决方案1】:

发布照片的应用需要在 $args 中包含用于管理页面的访问令牌。这也称为“页面访问令牌”或“页面令牌”。

$args['access_token'] = $access_token;

我获得这种访问令牌的方式是从作为页面管理员的用户(我)那里获得manage_pages,publish_stream 权限。那么:

$page_info = $facebook->api('/'.$PAGE_ID.'?fields=access_token');

和:

$access_token = $page_info['access_token'];

另请参阅:Developer blog post

【讨论】:

  • 如果我已经授权为应用程序,我不想(也不应该)获得用户令牌。
  • 在我的示例中,我使用的不是用户令牌,而是页面令牌。我已经编辑了我的答案以澄清这一点。这也在我的回答中引用的博客文章中。基本上,我传递了一个允许 manage_pages 和 publish_stream 的页面令牌。您是否将您正在使用的令牌提交给debugger?调试器说它有什么权限?
  • 没有意义的是,我可以发布到 Facebook 页面作为该页面关​​联的应用程序,而无需像您的示例中那样的用户访问令牌,但对于不起作用的照片。这是 Facebook 的 API 不一致。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
相关资源
最近更新 更多