为什么可以';t获取用户访问令牌(脱机)以管理页面


why can't get user access token (offline) to manage pages?

我正在尝试编写一个脚本,以便在管理员脱机时发布到页面。我的应用程序具有管理员用户的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()获取长期访问令牌返回短期令牌

错误消息会告诉您问题的确切原因…您需要获得一个用户访问令牌来访问您的页面令牌