3

我知道,这个问题被问了一百次,但没有一个给定的解决方案对我有用。我正在尝试在当前用户拥有的每个页面的墙上张贴。因此,我首先获得了 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"]));
    }
}

但是,在页面的墙上发布失败,并带有众所周知的错误消息

Uncaught OAuthException: (#200) 用户尚未授权应用程序执行此操作

有任何想法吗?我的错在哪里?

4

1 回答 1

2

如果您可以通过 Graph API Explorer 或 cURL 对其中一个页面进行相同的调用,那么您的逻辑是正确的。所以我会在调用上放置一个 try/catchpage/id以查看特定页面是否搞乱了循环。

try {
    $facebook->api("/".$page["id"]."/feed", "POST", array("link"=>$link, "access_token"=>$page["access_token"]));
  } catch (FacebookApiException $e) {
    error_log($e . " for: " .$page["id"] );
  }
}
于 2012-10-12T21:22:03.470 回答