我在我的网站上有一个测验程序,用户通过他们的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>
此代码为我打开一个对话框,但是输入空字段。如果用户单击“发布”按钮,则不会在其墙上发布任何内容,如果他们在输入字段中编辑文本,则他们将发布错误信息。此字段应该是不可编辑的,或者此框不应该存在。
请建议我使用代码示例的解决方案。
答案 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'});