我正在尝试向我的应用程序添加一项功能,该功能会将状态发布到管理员用户的页面时间线,其详细信息与他们在 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'] 时,它会正确地将状态发布为页面,但是当我添加任何其他内容时,它将帖子显示为经过身份验证的管理员用户而不是页面。 非常令人沮丧。 有什么想法吗?
我一直遇到帖子显示为管理员用户而不是页面的问题。
然后获取页面访问令牌,而不是管理员用户的用户访问令牌...
感谢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!';
}