在控制台中调用FB.init()错误之前调用FB.getLoginStatus()

mau*_*lla 38 javascript facebook

我正在尝试检查用户是否使用我的应用程序登录,但我收到了"

setSize调用之前调用getLoginStatus().

"控制台中的错误.setSize似乎工作(虽然不完全是1710高度,但绝对是1500左右)所以我无法理解为什么会<script src="file.js" type="text/javascript"></script>给出错误.

我还用appID(在下面删除)进行了双重检查,这肯定是正确的.脚本包含在我和div的正下方

window.fbAsyncInit = function() {
FB.init({
    appId      : 'APPID', // 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.Canvas.setSize({width: 520, height: 1710});

FB.Canvas.setAutoResize(100);

FB.getLoginStatus(function(response) {
    if (response.authResponse) {
        // logged in and connected user, someone you know
        alert("?");
    } else {
        // no user session available, someone you dont know
        alert("asd");
    }
});
};
Run Code Online (Sandbox Code Playgroud)

Abb*_*bby 31

您需要异步加载api.尝试删除您<script src="connect.facebook.net/en_US/all.js"></script>的JS并将其更新为:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelURL : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      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
    });

    //
    // All your canvas and getLogin stuff here
    //
  };

  // Load the SDK Asynchronously
  (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>
Run Code Online (Sandbox Code Playgroud)

哦,检查文档!

  • jQuery也可以加载js文件:`$ .getScript(document.location.protocol +'// connect.facebook.net/en_US/all.js');` (4认同)

The*_*yce 26

如果您不向FB.init提供appId,也会发生此错误.例:

    FB.init({
        appId: ''
        , channelUrl: '//domain/channel.html'
        , status: true
        , cookie: true
    });
Run Code Online (Sandbox Code Playgroud)

将导致:

在调用FB.init()之前调用FB.getLoginStatus().