我正在尝试编写一个脚本,以便在管理员离线时发布到页面。 我的应用程序具有admin用户的manage_pages扩展权限。 这是我的代码:
require('php-sdk/src/facebook.php');
$facebook = new Facebook(array(
'appId' => 'MY_APP_ID', // YOUR APP ID
'secret' => 'MY_SECRET', // YOUR API SECRET
'cookie' => true
));
$user_admin_id = 'MY_ADMIN_ID';
$page_id = 'MY_PAGE_ID';
//get the access token to post to my page via the graph api
$accounts = $facebook->api("/" . $user_admin_id . "/accounts");
foreach ($accounts['data'] as $account)
{
if ($account['id'] == $page_id)
{
//found the access token, now we can break out of the loop
$page_access_token = $account['access_token'];
break;
}
}
但我总是收到这条消息:
“致命错误:未捕获OAuthException:需要用户访问令牌 请求此资源。投入 /home/itrade10/public_html/khodiersoftware/php-sdk/src/base_facebook.php 在第1033行“
答案 0 :(得分:1)
您忘记授权用户,这就是您获取用户访问令牌的方式:
https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
不要忘记在范围参数中添加“manage_pages”权限。您还必须使用PHP SDK的函数“setExtendedAccessToken”来扩展用户令牌。之后,您将获得一个永久有效的 / me / accounts 端点的页面访问令牌。
如果您已经使用了getLoginUrl,那么该代码有问题,您可能希望将其添加到问题中。
在获取帐户之前(使用/ me / accounts,而不是您的ID),请获取用户ID:
$user = $facebook->getUser();
如果您有有效的用户令牌,您的ID将在$ user变量中。
答案 1 :(得分:1)
也许这个? https://developers.facebook.com/roadmap/offline-access-removal/也会看到Getting long-lived access token with setExtendedAccessToken() returns short lived token
答案 2 :(得分:0)
错误消息告诉您确切的问题是什么...您需要获取用户访问令牌才能访问您的页面令牌