Facebook Javascript SDK Not Loading

Facebook Javascript SDK Not Loading

本文关键字:Loading Not SDK Javascript Facebook      更新时间:2023-09-26

我刚刚开始使用Facebook SDK,我正试图使用一个脚本来抓取用户的名字和朋友的列表。这是我正在使用的初始化代码:

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-root元素,在脚本标记之外。大约有一半的时间,SDK加载良好,我在控制台中看到初始化和连接的消息。然而,另一半的时间,我只看到"Loading SDK"消息,没有其他,我认为这意味着SDK没有正确加载的原因。我还注意到它在页面导航时加载,但很少在刷新时加载。

我的问题是:是什么原因导致SDK不加载一些时间,我如何解决这个问题?

根据Facebook关于使用Facebook JavaScript SDK的最新文档,异步包含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));

我不太明白为什么这比你的方法更可靠,但我可以说这是我在我的网站上使用的,我没有遇到任何间歇性的问题,