2011-11-14 25 views
0

我是新來的Facebook的Javascript SDK時間。我正嘗試使用此API創建應用程序。但是在使用FB.api方法時運氣不佳。不知何故,我的FB.API方法每次都不能正常工作。有時它會給出響應(我只是訪問response.name),而其他時候它不會正確調用。FB.api不工作的每

window.fbAsyncInit = function() { 
FB.init({ 
    appId  : 'my_app_id', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    oauth  : true, // enable OAuth 2.0 
    xfbml  : true // parse XFBML 
}); 
FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
    alert('user is:'+response.status); 
    userId = response.authResponse.userID; 
    FB.api('/me',function(response) { 
    alert('Inside FB.api function'); 
    document.getElementById("userInfo").innerHTML = 'Welcome <img src="https://graph.facebook.com/'+ response.id + '/picture" style="margin-right:5px"/>' +response.name + '!'; 
    }); 
    } 
}); 
}; 

其他方法FB.ui和FB.getLoginStatus和Facebook類似按鈕按預期工作,但只有FB.api不工作無縫的方式等。不要爲什麼?請幫助我確定問題。

+0

:/請格式化後以這樣的方式,人們可以輕鬆地閱讀它... – Lix

+0

當你調用'FB.api(「/我」)'你得到了什麼錯誤? – Lix

回答

0

該代碼工作對我很好,但你可能想嘗試重命名你的反應變量。在FB.api回調中,實際上有兩個響應變量,這無疑會導致問題。嘗試改變它們,看看你是否得到不同的結果。

FB.getLoginStatus(function(loginResponse) { 
    if (loginResponse.authResponse) { 
    alert('user is:'+loginResponse.status); 
    userId = loginResponse.authResponse.userID; 
    FB.api('/me',function(apiResponse) { 
    alert('Inside FB.api function'); 
    document.getElementById("userInfo").innerHTML = 'Welcome <img src="https://graph.facebook.com/'+ apiResponse.id + '/picture" style="margin-right:5px"/>' +apiResponse.name + '!'; 
    }); 
    } 
}); 

它有可能是你的網頁上有其他影響這個。你有鏈接到你的網頁?

+0

感謝您的回覆,Abby。我將嘗試編輯響應變量並讓你知道。我正在本地開發應用程序。 –

+0

仍然沒有運氣。我試圖改變變量名稱,並且腳本的行爲方式相同。 –

+0

好的。當它失敗時究竟發生了什麼?你有錯誤信息嗎?你有鏈接到網頁? – Abby

2

我有完全相同的問題。這個答案我指出成正確的方向:

FB.api does not work when called right after FB.init

解決我的問題,我不得不訂閱正確的事件。在我的情況下,它是「auth.authResponseChange」 FB.init

FB.Event.subscribe('auth.authResponseChange', function(){ 
    FB.api('/me',function(r){ 
    console.log(r.id); 
    if (!r || r.error) { 
     alert('Error occured'); 
     } else { 
     alert(r.name); 
     }   
    }); 
}); 
+0

我還注意到了別的東西。如果我在調用DOM之前修改DOM,則FB.api失敗。 –

0

後,我有同樣的問題。 FB.api在我的應用程序的某個時刻停止了靜靜的工作。我注意到這是由於DOM操作:

<div id="fb-root"></div> 

重複或任何東西。你應該檢查這一點。它看起來像Johan Strydom的問題。