标题已经说明了一切。在某些(未确定)条件下,FB.getLoginStatus()就会停止工作,并且不会调用我提供的回调函数。我发现的唯一有趣的线索是:
- FB.Auth._loadState被卡在“loading”状态--无论是什么应该使它转换为“loaded”的东西都没有发生
- 稍微延迟一点,比如加入
alert()
调用,往往可以让它开始工作
关于如何调查这个问题的任何提示都欢迎。
标题已经说明了一切。在某些(未确定)条件下,FB.getLoginStatus()就会停止工作,并且不会调用我提供的回调函数。我发现的唯一有趣的线索是:
alert()
调用,往往可以让它开始工作关于如何调查这个问题的任何提示都欢迎。
根据:
https://developers.facebook.com/bugs/240058389381072
如果您将应用程序置于沙箱模式下,则无法正常工作。进入您的应用程序设置,选择高级选项,并切换它。我在看到这个错误报告之前困扰了几个小时。
我曾经遇到了与FB API类似的问题。后来发现,我的Facebook应用程序设置不正确。请确保你的情况不是这种情况。我的问题在于FB应用程序中我的“Site URL”参数指向了https,但我在开发过程中使用的是http协议。在FB.init
之后对FB api进行的任何调用都没有调用我的回调函数。所以首先要做的就是仔细检查应用程序配置。
现在,如果你由于某些原因依赖于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);
}
<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>
更多信息请查看我在此错误票证上的评论: https://developers.facebook.com/bugs/240058389381072
也许你正在使用异步调用。当我使用window.fbAsyncInit调用FB.init时,出现了同样的情况。我所做的就是使用setTimeout函数延迟FB.getLoginStatus的调用。
window.setTimeout(checkLogStatus, 1000);
function checkLogStatus(){
alert("check");
// fetch the status on load
FB.getLoginStatus(handleSessionResponse);
}
之后似乎就可以正常工作了。
我遇到了类似的问题。打开浏览器时网站可以正常运行,但尝试重新加载时却失败。
原因是Facebook配置中网站名称缺少“www”。请注意,在网站名称前加上“www”(例如www.yoursite.com)可适用于两种情况(yoursite.com或www.yoursite.com)。
正如其他人所发表的,您必须在与 Facebook 期望的相同 URL 上访问您的网站。例如,如果 Facebook 有一个回调 "example.com",但您的浏览器有 "www.example.com",那么可能会导致此问题。
此外,如果您的浏览器不允许第三方 cookie,则也可能会出现此问题。或者您可能会看到回调 错误地报告用户未连接。
我想分享一个遇到的情况,就是调用FB.getLoginStatus
没有任何响应。
我的应用程序是设计在选项卡中运行的,我只在应用程序管理页面上输入了页面选项卡URL,而没有输入Facebook应用程序(即画布)URL。选项卡可以完美加载,但对FB JS SDK的任何调用都没有响应。