我正在尝试编写一个脚本,以便在管理员脱机时发布到页面。我的应用程序具有管理员用户的managepages扩展权限。这是我的代码:
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/kodiersoftware/php-sdk/src/base_facebook.php在线1033"
您忘记授权用户,这就是您获得用户访问令牌的方式:
https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
不要忘记在范围Parameter中添加"manage_pages"权限。您还必须使用PHP SDK的函数"setExtendedAccessToken"来扩展用户令牌。之后,您将获得一个页面访问令牌,该令牌在/me/accounts端点上永远有效。
如果您已经使用了getLoginUrl,那么该代码有问题,您可能需要将其添加到问题中。
在获得帐户(使用/me/accounts,而不是使用您的id)之前,获取用户id:
$user = $facebook->getUser();
如果您获得了有效的用户令牌,您的ID将在$User变量中。
也许是这个?https://developers.facebook.com/roadmap/offline-access-removal/另请参阅使用setExtendedAccessToken()获取长期访问令牌返回短期令牌
错误消息会告诉您问题的确切原因…您需要获得一个用户访问令牌来访问您的页面令牌