简体   繁体   中英

Facebook not responding to Javascript API calls

I am attempting to use Facebook's Javascript SDK to get a user's login status when my page is displayed.

The code I am using is as follows:

FB.getLoginStatus(function(response) {
    if (response.status == 'connected') {
      alert('Logged in');
    } else {

      alert('Need to log in!');
    }
  });

I go through the Facebook initialization without problems, and the FB.getLoginStatus() function gets called, but apparently the Facebook server does not respond. I do not receive a response of any kind.

I did put my application's ID into the initialization function, and the initialization code is downloaded from Facebook. I am debugging on Firefox using Firebug, so I know the initialization is successful and the FB.getLoginStatus() call is being made. I am simply not getting the response back from the server.

Can anyone suggest any reasons why I am not getting this response? If so, please advise.

ADDITION:

In response to Sahil Mittal's request, the entire code is provided below. It should be noted that there really isn't much more to see...

<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
  appId      : XXXXXXXXXXXX,
  status     : true,
  xfbml      : true
});
};

(function(d, s, id){
 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.getLoginStatus(function(response) {
    if (response.status == 'connected') {
      alert('Logged in');
    } else {

      alert('Need to Log In');
    }
  });
</script>
<body>
<div id="fb-root"></div>
  ...
</body>

credit for this answer should go to CBroe. I wish that CBroe had put this as an answer so that I could give proper credit.

Nevertheless, the answer to this question is to place all FB functions inside the window.fbAsyncInit() function, as in the following example:

  window.fbAsyncInit = function() {
FB.init({
  appId      : XXXXXXXXXXXXX,
  status     : false,
  xfbml      : true
});

FB.getLoginStatus(function(response) {
    if (response.status == 'connected') {
      alert('Logged in');
    } else {

      alert('Need to Log In');
    }
  });
};

This is not well documented on Facebook (what else is new???), so I am posting this so that other Facebook newbies can avoid the frustration and delay that I experienced.

Again: thanks should go to CBroe for this answer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM