2013-04-28 82 views
3

我剛剛開始使用Facebook SDK,我正在嘗試使用抓取用戶名和朋友列表的腳本。這是初始化代碼我一起工作:Facebook Javascript SDK Not Loading

window.fbAsyncInit = function() 
{ 

    console.log("initialising"); 
    FB.init(
    { 
     appId  : 'APPID', 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : false // dont parse XFBML 
    }); 


    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      console.log("RESPONSE IS CONNECTED!"); 
     } else if (response.status === 'not_authorized') { 
      console.log("NOT AUTHORIZED"); 
     } else { 
      console.log("NOT LOGGED IN"); 
      FB.login(); 
     } 
    }); 


}; 

(function(d, s, id){ 
console.log("Loading SDK!"); 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_US/all.js"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

我有一個FB-根元素在文檔的頂部,腳本標記之外。 大約有一半時間,SDK加載正常,我在控制檯中看到初始化和連接的消息。但是,另一半時間,我只看到「加載SDK」消息,沒有別的,我認爲這意味着SDK無論如何都無法正確加載。我也注意到,它導航到頁面時加載,但很少刷新。

我的問題是:什麼導致SDK不加載一些時間,我該如何解決這個問題?

+0

嗯......你沒有指定,你也已經實現了所需的'fb-root'元素在文檔的正文中......您確實有其中之一,對吧? – Lix 2013-04-28 19:00:10

+0

噢,是的,我確實,對不起,沒有。我將編輯主要問題。 – Maccyjam 2013-04-28 19:05:38

回答

1

據Facebook的關於使用Facebook的JavaScript SDK的最新documentation,該方法包括SDK異步已更新:

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

它不會立即明顯,我爲什麼會更可靠相比你的方法,但我可以說這是我在我的網站上使用,我沒有經歷過任何間歇性問題,

+0

它花了一些時間來完全解壓縮代碼示例,但它看起來像唯一的實質性區別是這兩種方法之間的設置'js.async = true' – 2013-04-29 20:46:51

+0

感謝您的答覆。它看起來並沒有做什麼,因爲同樣的事情正在發生,我沒有看到「初始化」信息。我嘗試了其他方法來獲取我在其他網站上找到的SDK,但都無濟於事。 – Maccyjam 2013-04-29 20:54:10