2012-01-30 90 views
1

我正在使用FB JavaScript SDK並完全遵循FB教程。我添加了登錄按鈕,使用我的FB帳戶登錄,並試圖進行非常基本的FB.api調用,但即使在我用facebook登錄後也沒有得到正確的響應。這裏是代碼:如何使FB.api調用

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '291660820848913', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
    }); 

    FB.api('/me', function(response) { 
    alert(response.name); 
    }); 

    }; 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 

</script> 

這給了我一個警告,說「未定義」。難道我做錯了什麼?

+0

什麼警示特別?你的錯誤控制檯報告什麼? – sarnold 2012-01-30 01:31:16

回答

5
FB.api('/me', function(response) { 
    alert(response.name); 
    }); 

只有當您知道用戶已通過身份驗證時才應執行此操作。在致電FB.api()之前,您應該致電FB.getLoginStatus()

+0

我也試過,但仍無法使FB.api調用。任何其他可能性? – ramz15 2012-01-30 02:28:01

+0

檢查您的瀏覽器發出呼叫時從Facebook返回的響應流。 – DMCS 2012-01-30 02:54:57

2

確保您之前登錄過。

FB.login(function(response) { 
    console.log(response); 
    if (response.status=="connected") { 
    console.log("You're loggued in"); 
    FB.api('/me', function(response) { 
     alert(response.name); 
     }); 
    } 
}); 

在這個例子中,我迫使登錄,但考慮到之前(http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/)

2

檢查狀態您可以訂閱事件:

即)

FB.Event.subscribe('auth.login', function(response) { 
    FB.api('/me', function(response) { 
    alert(response.name); 
    }); 
}); 
3

輕易改變線

js.src = "//connect.facebook.net/en_US/all.js";

這樣:

js.src = "http://connect.facebook.net/en_US/all.js";