如何在Facebook墙上发布,无需打开对话框?

时间:2011-10-03 12:11:56

标签: php facebook dialog

我在我的网站上有一个测验程序,用户通过他们的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>

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

请建议我使用代码示例的解决方案。

2 个答案:

答案 0 :(得分:0)

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

添加到您编写的代码中,您应该通过在FB.init参数中添加'oauth:true'来使用OAuth2方法。

答案 1 :(得分:0)

您应该请求“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'});