在管理的Facebook页面上发布Feed

时间:2013-11-27 06:06:09

标签: php facebook facebook-graph-api facebook-php-sdk facebook-access-token

我正在尝试发布我在Facebook上管理的页面,并使用此代码。

$fb_key['key'] = 'fb_access_token';
$access = Model_const::read_key($fb_key);
$f = new facebook\fb($cfg);
$f->setAccessToken($access['value']);

$p = 'User is not logged in';
if($f->getUser())
{
   $page_arg['access_token'] = $f->getAccessToken();
   $page_arg['fields']        = 'access_token';
   $page_info = $f->api("/$fb_id",'get',$page_arg);

   $fb  = array();
   $fb['link'] = $uri;
   $fb['message'] = Input::post('content');
   $fb['access_token'] = $page_info['access_token'];

   $p = $f->api("$fb_id/feed",'POST',$fb);
}

我在这里跟踪了thread,看来$ ap_info部分无法被FB api识别。阅读文档没有帮助,但我可以使用我的个人帐户发布。我想在我的facebook非人类页面上找到它。

我希望有人能通过PHP SDK提供如何做到这一点。

2 个答案:

答案 0 :(得分:0)

实际上,您必须从管理员用户帐户检索页面访问令牌 这是文档的链接 https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens

答案 1 :(得分:0)

我认为您错过了权限: manage_pages

使用您的登录代码添加此权限。

  • 如果您使用 getLoginUrl(),请参阅here

  • 如果使用直接身份验证对话框网址,请按以下方式添加:

    $ dialog_url =“http://www.facebook.com/dialog/oauth?”        。 “client_id =”。 $ APP_ID        。 “& redirect_uri =”。 urlencode($ post_login_url)        。 “&安培;范围= manage_pages”;

另一件事,如果你想扩展永不过期的页面访问令牌,我在这个帖子中解释了相同的内容:What are the Steps to getting a Long Lasting Token For Posting To a Facebook Fan Page from a Server

其余的似乎是正确的。祝你好运。