标题真的说明了一切.在某些(未确定的)条件下,FB.getLoginStatus()只是停止工作,不会调用我给它的回调.我发现的唯一有趣的线索是
alert()打电话这样的轻微延迟往往会让它开始工作任何关于甚至如何调查此欢迎的提示.
Jef*_*eff 29
当我在与Facebook注册的域不同的域下运行页面时,这通常会发生在我身上.通常这是我在本地开发的时候.
如果您在本地运行,则必须设置本地Web服务器,然后修改hosts文件以将注册域指向127.0.0.1,以便在本地计算机上进行测试.如果要在服务器上测试它,请忘记从hosts文件中删除该行.
Wil*_*elm 12
根据:
https://developers.facebook.com/bugs/240058389381072
您不能将您的应用程序置于沙盒模式下,否则它将无法正常工作.进入您的应用设置,高级并切换它.这让我困扰了几个小时,直到我发现错误报告.
Łuk*_*man 12
我有与FB API类似的问题.事实证明,我的Facebook应用程序配置错误.请确保您不是这种情况.我的问题是FB应用程序中的" 站点URL "参数指向https,但我使用http协议进行开发.之后对FB api的任何调用FB.init都没有调用我的回调函数.所以要做的第一件事应该是仔细检查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);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
也许您正在使用异步调用.当我用window.fbAsyncInit调用FB.init时发生了同样的事情.我所做的就是使用setTimeout函数延迟FB.getLoginStatus
window.setTimeout(checkLogStatus, 1000);
function checkLogStatus(){
alert("check");
// fetch the status on load
FB.getLoginStatus(handleSessionResponse);
}
Run Code Online (Sandbox Code Playgroud)
它似乎在那之后起作用
如果您的应用程序处于沙盒模式,则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>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅我对此错误凭单的评论:https: //developers.facebook.com/bugs/240058389381072
| 归档时间: |
|
| 查看次数: |
19054 次 |
| 最近记录: |