我一直试图使用Facebook php sdk在我的Facebook页面上发帖,但出现错误“(#200)权限publish_actions不可用”,奇怪的是我要的是而是使用“ pages_show_list,manage_pages,publish_pages和user_photos”权限。我一直在寻找原因,但找不到任何东西。
这就是我要他们的方式:
$loginUrl = $helper->getLoginUrl(
'http://localhost:8080/fbTest/fb-callback.php',
array('scope' => 'pages_show_list, manage_pages, publish_pages, user_photos'));
这是我的帖子:
$res = $fb->post($pageID . '/photos/', $data, $accessToken);
$post = $res->getGraphObject();
对于这件事我很陌生,我一直在尽我所能阅读文档,但是找不到解决方案。我的应用尚未发布,我仍在使用它进行测试,我已经使用了我的管理员帐户和我创建的测试用户...(记录下来,我设法使用javascript sdk发布了帖子,但我没有问题在那里,我发了帖子)。有什么问题的想法吗?我几乎使用了Facebook提供的用于登录的示例代码以及我在此处使用的大多数东西。谢谢!
答案 0 :(得分:0)
解决方案:
正如我强大的WizKid所说的,找到了解决方案,我使用的是用户令牌,而不是页面令牌。
因此,为了获取页面访问令牌,我使用了以下代码:
$accessToken = $helper->getAccessToken();
$longLivedToken = $fb->getOAuth2Client()->getLongLivedAccessToken($accessToken);
$fb->setDefaultAccessToken($longLivedToken);
$response = $fb->sendRequest('GET', $pageID, ['fields' => 'access_token']) -
>getDecodedBody();
$foreverPageAccessToken = $response['access_token'];
$fb->setDefaultAccessToken($foreverPageAccessToken);
然后我这样发出请求:
// POST request.
$res = $fb->post($pageID . '/photos/', $data, $foreverPageAccessToken);
$post = $res->getGraphObject();
对我来说效果很好!
我找到了如何获取页面访问令牌的来源:https://github.com/facebook/php-graph-sdk/issues/785