我有Facebook身份验证逻辑的问题:
getLoginStatus()
,如果我得到"connected"
,我将用户重定向到他的帐户页面。如果没有,用户可以单击调用FB.login()
的登录按钮。getLoginStatus()
会按预期返回"connected"
,并且用户会被退回到帐户页面。FB.logout()
并重复步骤1-2时,第二步将始终产生"unknown"
登录状态。所以,FB.logout()
基本上打破了我的弹跳逻辑。我检查了登录/注销调用的机制,看来FB.logout()
创建了一个fblo_<appId>
cookie,1年到期,阻止getLoginStatus()
返回正确的状态。这似乎是让人们退出的实际机制,我可以理解。但是,我无法理解的是:为什么在成功的FB.login()
通话中没有删除此cookie?
我通过以编程方式删除FB.login()和FB.logout()的回调函数中的cookie qazxsw poi来自行修复它
我几天前经历过这个,但我不再看到这个问题了。
在任何一种情况下,请确保在测试时考虑以下不同的情况:
一个人登录Facebook,然后登录到您的应用程序。从您的应用程序注销后,此人仍然登录到Facebook。
作为应用程序登录流程的一部分,一个人登录到您的应用程序并进入Facebook。从您的应用程序注销后,该用户也将退出Facebook。
一个人登录到另一个应用程序并进入Facebook作为其他应用程序登录流程的一部分,然后登录到您的应用程序。从任一应用程序注销后,用户将退出Facebook。
fblo_<appid>
调试提示:
在Chrome的“应用程序”标签中,您可以在左侧面板中选择Cookie,然后在搜索框中键入https://developers.facebook.com/docs/reference/javascript/FB.logout/以按该名称进行过滤。当我打电话给fblo
并成功验证时,我发现FB.login
cookie消失了 - 所以我相信这个问题已经解决了。
fblo