如何更改此示例Facebook代码以自动发布Feed数据?

时间:2012-05-07 07:11:14

标签: php javascript facebook

我花了this code from Facebook's documentation让我开始学习如何让我的应用发布到Feed中。

它按照描述的方式工作,因为当我转到我的应用程序的画布URL时,我会看到一个对话框,我可以在其中输入文本,单击“共享”,然后将其发布到我的时间轴中。到目前为止,非常好。

但我想改变它,以便不是明确地输入内容并单击按钮,而是自动将帖子发送到Feed,在我的PHP代码中触发事件。

然而,我意识到这是一个新手的问​​题,我无法弄清楚如何调整代码来实现这一点。我的实验要么只是破坏代码,要么以相同的对话结束。

如何让PHP直接在邮件中发布邮件,然后立即显示应用程序的画布URL(以免陷入不断重新加载并一遍又一遍地发布...)?

为方便起见,这里有与Facebook文档相同的代码:

<?php 

         $app_id = "YOUR_APP_ID";

         $canvas_page = "YOUR_CANVAS_PAGE_URL";

         $message = "Apps on Facebook.com are cool!";

         $feed_url = "https://www.facebook.com/dialog/feed?app_id=" 
                . $app_id . "&redirect_uri=" . urlencode($canvas_page)
                . "&message=" . $message;

         if (empty($_REQUEST["post_id"])) {
            echo("<script> top.location.href='" . $feed_url . "'</script>");
         } else {
            echo ("Feed Post Id: " . $_REQUEST["post_id"]);
         }
?>

1 个答案:

答案 0 :(得分:1)

您可以通过要求publish_stream权限来实现此目的(请参阅Publishing Permissions)。

一旦您的应用获得用户授予的权限,您就可以发布Feed故事而不向用户显示Feed对话。

这也允许您将内容发布到用户的Feed,而无需用户的有效access_token并为此目的使用应用access_token

使用PHP-SDK实现这一点非常容易:

$facebook = new Facebook(/*...*/);

$facebook->api('/USER_ID/feed', 'post', array(
  'message'=>'Text entered by user'
));

对于该任务,publish_actions权限可能就足够了,但是开发者网站上的文档尚未更新,因此使用publish_stream更安全(userpublish_stream}对象)。

  

publish_actions权限是publish_actions的超集,允许{{1}}允许的所有内容以及更多内容。一些额外的发布功能是:

     
      
  • 发布到朋友的Feed
  •   
  • 发布问题
  •   
  • 创建笔记
  •   
  • 将内容发布到活动或群组
  •