2011-10-03 60 views
0

我在我的網站上有一個測驗程序,用戶通過他們的Facebook帳戶登錄並玩測驗。如何在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

可能重複http://stackoverflow.com/questions/4489519/how-to-post-on-facebook-wall-without-opening-dialog – madmik3

回答

0

這是因爲FB不允許預編輯消息字段。如果您想在用戶的Wall中發佈內容,您應該擁有來自用戶的'publish_stream'權限,這樣您就可以發佈消息而無需請求用戶在消息框中輸入內容或按下發布按鈕。但爲此,您必須調用FB.api來訪問Graph API以訪問用戶的Wall。有關更多詳細信息,請參閱Graph API

添加到您編寫的代碼中,您應該通過向FB.init參數添加'oauth:true'來使用OAuth2方法。

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'}); 
相關問題