为什么无法获取用户访问令牌(离线)来管理页面?

时间:2013-08-11 19:49:32

标签: php facebook facebook-graph-api

我正在尝试编写一个脚本,以便在管理员离线时发布到页面。 我的应用程序具有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行“

3 个答案:

答案 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)

答案 2 :(得分:0)

错误消息告诉您确切的问题是什么...您需要获取用户访问令牌才能访问您的页面令牌