【问题标题】:How to post on facebook wall, without opening dialog box?如何在不打开对话框的情况下在 Facebook 墙上发帖?
【发布时间】:2011-10-03 12:11:56
【问题描述】:

我的网站上有一个测验程序,用户通过他们的 Facebook 帐户登录并玩测验。

成功完成测验后,我想在他们的墙上发布他们的分数和排名。 Facebook 登录和注销工作正常。如何在不显示对话框的情况下在他们的墙上显示他们的分数和排名?

我正在使用此代码在用户的墙上发布分数和排名-

require 'src/facebook.php';

<?php
    $facebook = new Facebook(array(
        'appId'  => 'APP ID',
        'secret' => 'SECRET KEY',
    ));
?>
<script>
    FB.init({ 
        appId:'APP ID', cookie:true, 
        status:true, xfbml:true 
    });

    FB.ui({ method: 'feed', 
        message: '<?php echo "My score is ".$myscore." and rank is ".$rank; ?>'});
</script>

此代码正在为我打开一个对话框,但输入字段为空。如果用户点击“发布”按钮,则不会在他们的墙上发布任何内容,如果他们在输入字段中编辑文本,那么他们将发布错误信息。该字段应该是不可编辑的,或者该框不应该存在。

请用代码示例给我一个解决方案。

【问题讨论】:

标签: php facebook dialog


【解决方案1】:

那是因为FB不允许预先编辑消息字段。如果您想在用户的 Wall 中发布内容,您应该获得用户的“publish_stream”权限,这样您就可以发布消息,而无需要求用户在消息框中输入内容或按下发布按钮。但为此,您必须调用 FB.api 来访问 Graph API 以访问用户的墙。详情请见Graph API

添加到您编写的这段代码,您应该通过将“oauth: true”添加到 FB.init 参数来使用 OAuth2 方法。

【讨论】:

    【解决方案2】:

    您应该请求“publish_stream”权限,以便能够在不向用户显示对话框的情况下发布 Feed Stories。

    示例代码可能如下所示:

    FB.login(function(response) {
      if (response.authResponse) {
        console.log('Posting message');
        FB.api('/me', 'post', {message: 'Beware, boiling water...'});
       } else {
         console.log('User cancelled login or did not fully authorize.');
       }
     }, {scope: 'publish_stream'});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多