FB.getLoginStatus永远不会在Facebook的JavaScript SDK中触发回调函数

Dan*_*Dan 10 facebook-iframe facebook-javascript-sdk

调用FB.init(之前</body>)的简单事情然后FB.getLoginStatus(callback)不会触发回调函数.

经过一些调试后,我认为SDK停留在"加载"(即FB.Auth._loadState == 'loading')阶段并且永远不会"加载",因此所有回调都会排队,直到SDK加载完毕.如果我在调试期间强制触发"已加载"事件 - FB.Event.fire('FB.loginStatus', 'loaded')如果您有兴趣 - 那么可以正确调用回调.

可能相关的额外细节:

  1. 我的应用程序是facebook iframe应用程序(通过apps.facebook.com/myapp加载)
  2. 我正在使用IE9.Chrome中也会出现相同的行为
  3. 该应用程序托管在http:// localhost中

这是怎么回事?为什么SDK永远不会被加载?

谢谢

更新:刚刚在Chrome上试过它并且它有效(不知道为什么它之前没有用).仍然无法在IE中工作

phr*_*ead 6

我在Windows上的Firefox 3.5中遇到了同样的问题,但只是在第一次登录页面时(可能是因为它是一台速度较慢的机器而且有一些奇怪的时间问题正在发生).

我通过强制FB每次检查时刷新登录状态cookie来修复它:

FB.getLoginStatus(callback, true); //second argument forces a refresh from Facebook's server. 
Run Code Online (Sandbox Code Playgroud)

没有"force = true",有时它不会触发回调.