PHP Facebook API 在页面墙上发布

标签 php facebook api facebook-graph-api

我知道,这个问题被问了上百次,但给出的解决方案都不适合我。 我试图在当前用户拥有的每个页面的墙上张贴。因此,我首先获得了 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/

相关文章:

php - 我的数据库中有 date_from 和 date_to 列...我如何显示基于 date_from 和 date_to 作为范围日期的所有记录

javascript - 根据链接到数据库的组合框在标签中显示值

IOS FACEBOOK SDK,从FB注销并在之后登录

facebook - 从应用范围内的用户 ID 获取 Facebook 个人资料 URL

javascript - 我已经尝试了所有返回 JSON 编码的 PHP 对象的方法 - 为什么它不起作用?

PHP - 包含而不是 <script>

facebook - <FB :like> button does not work in IE8

c# - 使用 Twitter API 获取 protected 推文

javascript - 如何使用 Dynamic CRM 端点从列表中删除联系人

json - 如何通过 Dart 使用方法和数据发布到外部 API