2011-01-31 40 views
5

由于某种原因,FB.getLoginStatus函数对我来说不起作用 - 尽管它已经用了一段时间了。 下面是非常基本的代码,并且从不弹出警报 - 看起来像FB.getLoginStatus从不调用提供的函数。 任何想法?FB.getLoginStatus不起作用?

<body> 
<form id="form1" runat="server"> 
<div id="fb-root"> 
</div> 
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    FB.init({ appId: 'xxx', status: true, cookie: true, xfbml: true }); 
    FB.getLoginStatus(function (response) { 
     alert("Hi there"); 
    }); 
</script> 
</form> 

回答

0

在哪个平台开发的应用程序?如果是FBML然后检查FBJS-Facebook JavaScript。我认为警报不会在FBML应用程序。 我得到这个working..Just检查

<div id="fb-root"></div> 
<script type="text/javascript"> 
window.fbAsyncInit = function() { 
    FB.init({appId: 'APP_ID', status: true, cookie: true, xfbml: false}); 
}; 
(function() { 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
}()); 
window.fbAsyncInit = function() { 
    FB.init({appId: 'APP_ID', status: true, cookie: true, xfbml: true}); 

     /* All the events registered */ 
     FB.Event.subscribe('auth.login', function(response) { 
      // do something with response 
      login(); 
     }); 
     FB.Event.subscribe('auth.logout', function(response) { 
      // do something with response 
      logout(); 
     }); 

     FB.getLoginStatus(function(response) { 
      if (response.session) { 
       // logged in and connected user, someone you know 
       login(); 
      } 
     }); 
    }; 

6

如果您的应用程序是在沙盒模式看到了这个bug:https://developers.facebook.com/bugs/240058389381072

也由菲利普Bulley阅读注释

[ ...]基本上沙盒应用程序对非应用程序开发人员是不可见的。如果当前没有用户登录到Facebook,Facebook将会像您的沙盒应用程序根本不存在一样(FB显然不知道您是应用程序开发人员,因此该应用程序是不可见的!)。

此错误已被确认并分配。

+0

哦天啊,谢谢你解释这个。试图找出问题所在,我一直把我的头发拉出几个小时。关闭沙盒模式,现在FB.getLoginStatus正常工作。 (这引起了对沙箱模式的价值的质疑...但是哦)谢谢! – 2012-02-09 21:03:09