【问题标题】:PHP Facebook API Post on page's wallPHP Facebook API 在页面的墙上发布
【发布时间】:2012-10-12 21:05:45
【问题描述】:

我知道,这个问题被问了一百次,但没有一个给定的解决方案适合我。 我正在尝试在当前用户拥有的每个页面的墙上张贴。因此,我首先获得了 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) 用户尚未授权应用程序执行此操作

有什么想法吗?我的错在哪里?

【问题讨论】:

  • 这样做的正当理由肯定很少:/

标签: php facebook api facebook-graph-api


【解决方案1】:

如果您可以通过 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"] );
  }
}

【讨论】:

  • 我成功使用了 Graph API Explorer。我生成了一个具有必要权限的 access_token,使用 /me/accounts 来获取我的页面的 id 和 access_token,并使用这些数据发布在 /me/feed 上。但是,我没有成功使用 cURL 和/或 php-api。我不知道发生了什么。
  • @user1742364 你能用纯 curl 构建查询并在你的问题中显示它吗?
  • 对不起,我不知道如何发布纯 curl,但这就是我在 PHP 中使用它的方式:link
  • @user1742364 所以它不适用于所有使用your link 的页面还是仅使用几个?
  • 好吧,我用一个拥有两个页面的测试用户对其进行了测试。并且它不适用于任何这些页面,尽管他是页面的管理员并且应用程序具有所有提到的权限。
猜你喜欢
  • 2012-06-13
  • 2011-03-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
相关资源
最近更新 更多