2011-03-04 84 views
21

标题真的说明了一切。在一些(未确定的)条件下,FB.getLoginStatus()停止工作,不会调用我给它的回调函数。我发现的唯一有趣的线索FB.getLoginStatus不调用其回调

  • FB.Auth._loadState是停留在“加载” - 无论是应该让它点击到“装”是不会发生
  • 像轻微的延迟打在alert()电话往往使它开始工作

任何提示甚至如何调查这种欢迎。

+1

它发生在用户移除您的应用程序后可靠 – Martin 2011-05-10 08:53:37

+0

我也遇到过这种情况。你有脸书Facebook错误消息的Facebook登录弹出窗口,或者弹出窗口没有发生?对我来说,弹出窗口已停止工作(并没有被阻止 - 只是没有被调用,JavaScript中也没有回调)。 – potench 2012-07-06 18:02:55

回答

5

也许你正在使用异步调用。当我用window.fbAsyncInit调用FB.init时发生了同样的事情。我所做的只是一个setTimeout函数延迟FB.getLoginStatus

window.setTimeout(checkLogStatus, 1000); 


    function checkLogStatus(){ 
      alert("check"); 
      // fetch the status on load  
      FB.getLoginStatus(handleSessionResponse); 
    } 

看来以后

+0

工作真棒!拍摄兄弟! – 2012-02-27 20:35:07

+0

这对我有用! TQ! – 2018-01-03 06:34:05

27

这通常当我从下了什么注册不同的域名运行页面恰好适合我的工作在Facebook。通常这是我在本地开发的时候。

如果您在本地运行,则必须设置本地Web服务器,然后修改您的主机文件以将注册域指向127.0.0.1,以便在本地计算机上进行测试。当你想在服务器上测试时,不要忘记从主机文件中删除该行。

+4

是的是的!最后。几年前,我创建了一个Facebook应用程序,但没有考虑更改URL。对FB没有提供有用的错误信息感到羞耻。 – JnBrymn 2011-09-15 18:14:21

12

我的FB API有类似的问题。事实证明,我的Facebook应用程序配置错误。请确保这不是你的情况。我的问题是我在FB应用程序中的“Site URL”param指向https,但我使用http协议进行开发。在FB.init之后的任何针对FB api的调用都没有调用我的回调函数。因此,首先要做的事情是仔细检查App配置。

现在,如果某些原因您依赖于FB api,但是您希望有一个备用选项以防止它失效 - 您可以使用计时器解决问题。只需设置一个计时器并禁用它,如果FB Api给你适当的响应。如果不是 - 回退到一些自定义函数,它将执行一些额外的逻辑。

function callFbApi() { 
    var timeoutHandler = setTimeout(function() { requestFailed(); }, 1000); 

    function requestFailed() { 
     // When this happens, it means that FB API was unresponsive 
     doSomeFallbackWork(); 
     alert('hey, FB API does not work!'); 
    } 

    FB.getLoginStatus(function(response) { 
     clearTimeout(timeoutHandler); // This will clear the timeout in case of proper FB call 
     doSomeUsualWorkAfterFbReplies(); 

     return false; 
    }, true); 
} 
1

在开发应用程序的新版本,你必须确保已经把你正在使用下的

选择来访问网站领域的应用如何正确的网址您应用程序集成了Facebook

部分。

5

如果您的应用程序处于沙箱模式,那么Facebook的行为就好像您的应用程序对于未列为应用程序开发人员的任何人都是不可见的。如果你没有登录,那么你的应用程序现在是不可见的。

只有在使用可见应用程序进行初始化时,回调才会触发。否则下面的响应返回:

<span>Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later. </span> 

欲了解更多信息,请参阅我的这个bug票评论: https://developers.facebook.com/bugs/240058389381072

0

正如其他人发布的,你必须在这个Facebook的预计相同的URL来访问你的网站。例如,如果Facebook有回调“example.com”,但浏览器有“www.example.com”,则可能导致此问题。

此外,如果您的浏览器不允许使用第三方cookie,您也可能会看到此问题。或者你可以看到回调erroneously reporting the user is not connected

0

只是发布我曾打电话给FB.getLoginStatus的情况完全没有答复。

我的应用程序被设计成在标签上运行,而我只进入了应用程序管理页面上页面标签的网址,而不是应用在Facebook上(即Canvas)的网址。该选项卡完美加载,但对FB JS SDK的任何调用都不会引发任何响应。

1

确保协议是HTTPS而不是HTTP。

1

我有类似的问题。当我打开浏览器时,该网站每次都工作,但是当我尝试重新加载时失败。

原因是Facebook配置上的网站名称上缺少“www”。请注意,放置“www”(如www.yoursite.com)适用于两种情况(yoursite.com或www.yoursite.com)。

-1

在Facebook的应用程序设置,去客户端的OAuth设置,看有效的OAuth重定向的URI

确保您列出哪些是从被调用的Facebook SDK域的URI。例如:

enter image description here

我开发位于localhost:5000并部署到Heroku的。注意格式:http://domain.name/

+0

没有任何客户端OAuth设置 – Green 2016-06-30 12:58:31