0

我正在尝试编写脚本以在管理员离线时发布到页面。我的应用程序具有管理员用户的 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:请求此资源需要用户访问令牌。在第 1033 行的 /home/itrade10/public_html/khodiersoftware/php-sdk/src/base_facebook.php 中抛出”

4

3 回答 3

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 变量中。

于 2013-08-11T20:06:42.823 回答
0

错误消息准确地告诉您问题出在哪里...您需要获取用户访问令牌才能访问您的页面令牌

于 2013-08-11T20:00:43.930 回答