3

我正在尝试向我的应用程序添加一项功能,该功能将向管理员用户的页面时间线发布状态,其详细信息与他们在 Facebook.com 上发布的信息相同。我关注的主要功能是链接共享和缩略图,例如当您将链接粘贴到您的状态时,它会自动检测缩略图,为您提供漂亮的链接、描述等。我孜孜不倦地阅读其他论坛和 Graph API 文档,我一直遇到问题,帖子显示为管理员用户,而不是页面。这是我的代码:

$facebook = new Facebook(array(
  'appId'  => $appID,
  'secret' => $appSecret,
));

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => 'publish_stream, read_insights, manage_pages, photo_upload, video_upload, create_note, manage_notifications'
));

$access_token   = $facebook->getAccessToken();

$fbpost = array();

$fbpost['access_token'] = $access_token;
$fbpost['message']      = $message;
$fbpost['link']         = $link;
$fbpost['description']  = $description;
$fbpost['caption']      = $caption;
$fbpost['picture']      = $fbimg;

$status = $facebook->api('/'.$pageID.'/feed', 'POST', $fbpost);
var_dump($status);

当我只发布 $fbpost['message'] 时,它会正确地将状态发布为页面,但是当我添加任何其他内容时,它会将帖子显示为经过身份验证的管理员用户而不是页面。非常令人沮丧。有任何想法吗?

4

2 回答 2

4

我一直在以管理员用户而不是页面显示帖子时遇到问题。

然后获取页面访问令牌,而不是管理员用户的用户访问令牌……</p>

于 2012-06-15T18:07:27.587 回答
3

感谢 CBroe在页面/应用访问令牌上提供 Facebook 文档的链接。在检查完之后,我想出了这个 PHP(因为 PHP SDK 中没有很好的文档来获取页面访问令牌):

$user_token     = $facebook->getAccessToken();
$accounts       = $facebook->api('/me/accounts?access_token='.$user_token);
$account_token  = 0;
foreach ($accounts['data'] as $account) {
    if ($account['id'] == $_SESSION['facebook']) {
        $account_token = $account['access_token'];
    }
}

if ($account_token) {
    /// your page token code
} else {
    echo 'You must be an admin on this page!';
}
于 2012-06-18T13:49:30.687 回答