gpt4 book ai didi

android - IE、Chrome、Firefox 和 Android 浏览器上的 Facebook oauth、FB.getLoginStatus 和 FB.logout

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:34 25 4
gpt4 key购买 nike

我正在使用 FB 的 oauth 成功验证用户身份,但我无法使用似乎推荐的方法可靠地注销他们:使用 FB JDK 的 FB.logout。

具体来说,如果我使用的是 Chrome 或火狐。但是,它似乎在 IE 或 Android 浏览器中不起作用。当我说它在 IE 和 Android 浏览器中不起作用时,我的意思是在调用 FB.logout 之后重定向到 www.facebook.com/dialog/oauth.. 加载我的回调页面而不提示用户再次输入凭据。在 Chrome 和 Firefox 中,此时会“正确”提示他们这样做。

我的各种调试尝试让我意识到对 FB.getLoginStatus 的调用(即使在调用 FB.logout 之后)将传递一个有效的 response.session 对象到它在每个浏览器中的回调。因此,根据 FB.getLoginStatus, session 在每个浏览器中仍然处于 Activity 状态,即使在 FB.logout 之后也是如此。这让我想知道我的 FB.logout 是否有效。

我知道 oauth 和 FB JDK 是两个不同的东西,不一定能很好地协同工作,但除了调用 FB.logout 之外,我还没有看到结束 FB oauth session 的任何其他替代方法。

还有其他人看到这些违规行为或有解决方案吗?谢谢。

最佳答案

我在发布以上内容后找到了这个答案:

FB.logout not working in IE8

建议将调用 FB.logout 后的重定向放在 setTimeout 函数中。基本上,给 FB.logout 函数大约 2000 毫秒来完成。

我试过了,它解决了 IE 和 Android 浏览器中的问题。基本上,Chrome 和 Firefox 有一个足够快的 JavaScript 引擎,FB.logout 将在新页面加载到浏览器之前完成执行,而 IE 和 Android 浏览器则没有。

按照这个逻辑,我意识到 FB.logout 有一个回调函数是有原因的,使用它来做任何重定向可能更安全(而不是玩 setTimeout 延迟)。

function mysignout()
{
FB.logout(function()
{
top.location.href = '../mobile.php'
});
}

出于好奇,我测试了在 Chrome 和 IE 中执行回调的时间差异。 Chrome 用了 2511 毫秒完成注销 IE 用了 3517 毫秒。我认为让我感到困惑的是,我认为 FB.logout 只是在本地删除了 cookie,根本不会花费任何时间。相反,它看起来像是某种 ajax 调用来撤销服务器上的身份验证,并且需要相当长的时间。

关于android - IE、Chrome、Firefox 和 Android 浏览器上的 Facebook oauth、FB.getLoginStatus 和 FB.logout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com