通过PHP SDK以用户身份发布到Facebook粉丝页面

时间:2013-06-10 09:22:23

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

我目前面临的问题是Facebook API在2012年夏天没有出现。 在我的Facebook应用程序中,用户可以在textarea中键入一些文本,然后将其发布到Facebook粉丝页面,就像他自己去Facebook页面并将其发布到那里一样。

因此,我的应用需要publish_stream扩展权限才能发布到网页Feed上。

为了解决这个问题,我正在做以下事情:

try{
    $response_object = $fb->api('XXX/feed', 'POST', array(
        'message' => $input->post('user_text'),
    ));     
}
catch(Exception $e){
    die($e->getMessage());
}

去年这个没有任何问题。在页面的Feed上(PageId在上面的代码片段中替换为XXX),使用该应用的用户在页面上显示了一条帖子。

令我惊讶的是,当我今天试图做同样的事情时,上面的片段中的例外是正确的。我没有像使用fb API处理数据那样改变任何东西。

我得到的信息如下:

(#283) Requires extended permission: manage_pages

我不需要以页面管理员身份发布到墙上,而是以用户身份发布。我在使用publish_stream权限授权时检索了用户访问令牌,但我不想获得manage_pages权限,因为我不需要管理用户页面。

我想要做的只是以使用该应用的用户身份发布到粉丝页面。

Facebook最近在" post-to-feed程序"还是我个人错过了什么?

提前致谢 托马斯

2 个答案:

答案 0 :(得分:1)

抱歉这么自负。我在这里提出问题几天后就解决了这个问题。不要问我为什么,但通过使用CURL作为用户发布到页面Feed时,一切都按预期工作。

<?php

$postfields = array(
    'message' => 'The message to be posted on the feed',
    'link'    => 'http://anyurl.com',
    'access_token' => 'A_VALID_USER_ACCESS_TOKEN', // This is the important part, don't miss it
);

$posturl = 'https://graph.facebook.com/PAGE_ID/feed';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $posturl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
curl_close($ch);    

?>

请注意,您不得发布预定义内容,但始终允许用户发布消息。否则,Facebook将暂停您的应用以允许发布到网页Feed。

答案 1 :(得分:1)

这可以与问题相关联,该问题禁止作为给定页面管理员的用户在该页面的订阅源上发布(作为用户而非页面)。

如果您尝试以普通用户身份发布(而非作为网页管理员),请检查是否会发生相同情况。根据我的经验,平均如果应用程序具有权限,则用户可以执行此操作:publish_stream,publish_action。

以下是我的错误报告:https://developers.facebook.com/bugs/167764356741336?browse=external_tasks_search_results_51f780dd6e9da2d82532422