我目前面临的问题是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程序"还是我个人错过了什么?
提前致谢 托马斯
答案 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。