发布到我的Facebook公司页面作为页面

时间:2014-01-25 03:41:31

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

我已经成功使用以下代码发布到我的粉丝页面AS页面:

    //Call Facebook API
$facebook = new Facebook(array(
  'appId'  => $appId,
  'secret' => $appSecret,
  'cookie' => true,
));

$fbPost = array('access_token' => $fbToken, 'message' => $string2 ,'name' => $string2, 'description'=> $description,'link'=> $unshort);

try{
    //This is to post a link!
    $postResult = $facebook->api('/xxxxxxxxxxxxxxx/feed', 'POST', $fbPost );
    echo 'Posted';
    echo '<br />';          
} catch (Exception $e){
    echo 'Didnt Work';
    echo '<br />';          
    echo $e->getMessage();
}

然而,我的帐户被Facebook暂时阻止(不要问......恶意竞争对手)。在清理完情况后,我的帐户禁令已被解除,我可以在我的粉丝页面上发布,但我上面的PHP脚本只会在页面上发布,而不是页面本身。

禁令解除后,我不得不更新我的访问权限,但这样做是正常的。由于我的代码没有改变,我猜测它与我更新访问令牌的方式有关,但一切似乎都是有序的。

关于为什么我的代码现在作为我(管理员)发布而不是作为页面本身的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这是因为您的访问令牌缺少manage_pages。尝试调试您的访问令牌。

根据Page Feed documentation,具有publish_actions权限的页面访问令牌可用于代表该页面发布新帖子。要获取页面访问令牌,您需要先获取用户访问令牌并要求manage_pages权限。获得用户访问令牌后,您可以通过图表API获取页面访问令牌,向/{user-id}/accounts发出GET请求。这将为您提供一个页面访问令牌,允许您作为页面发布。

对于页面访问令牌,您可以执行以下操作:

$userAccounts = $facebook->api('/me/accounts');

这将为您提供以下输出:

{
  "data": [
    {
      "category": "Product/service",
      "name": "Sample Page",
      "access_token": "{access-token}",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }, 
}

更多详细信息,请访问:Page Tokens