我知道,这个问题被问了上百次,但给出的解决方案都不适合我。 我试图在当前用户拥有的每个页面的墙上张贴。因此,我首先获得了 publish_actions、read_stream、manage_pages 和 offline_access 的权限。然后我通过/me/permissions 检查用户是否真的授予了这些权限。
然后,我尝试获取该用户的所有页面并在该页面的墙上发布,如果该用户是管理员:
$accounts = $facebook->api("/me/accounts", "GET", array("access_token"=>$facebook->getAccessToken()));
$data = $accounts["data"];
foreach ($data as $page)
{
if (isset($page["perms"]) && in_array("CREATE_CONTENT", $page["perms"])))
{
$facebook->api("/".$page["id"]."/feed", "POST", array("link"=>$link, "access_token"=>$page["access_token"]));
}
}
但是,在页面墙上发布失败,并显示众所周知的错误消息
未捕获的 OAuthException:(#200)用户未授权应用程序执行此操作
有什么想法吗?我的错在哪里?
最佳答案
如果您可以通过 Graph API Explorer 或 cURL 对其中一个页面进行相同的调用,那么您的逻辑是正确的。因此,我会在 page/id
调用上放置一个 try/catch,以查看特定页面是否打乱了循环。
try {
$facebook->api("/".$page["id"]."/feed", "POST", array("link"=>$link, "access_token"=>$page["access_token"]));
} catch (FacebookApiException $e) {
error_log($e . " for: " .$page["id"] );
}
}
关于PHP Facebook API 在页面墙上发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867108/