FB.login为什么不删除注销cookie?

问题描述:

我有Facebook验证逻辑问题:FB.login为什么不删除注销cookie?

  1. 在主页加载,我打电话getLoginStatus(),如果我得到"connected",我将用户重定向到他的账户上。如果没有,用户可以点击呼叫FB.login()的登录按钮。
  2. 如果用户已登录,然后导航回主页(整页加载),则getLoginStatus()将按预期方式返回"connected",并且用户会弹回到帐户页面。
  3. 但是,当登录用户呼叫FB.logout()并重复步骤1-2时,第二步总是会产生登录状态"unknown"。所以,FB.logout()基本上打破了我的弹跳逻辑。

我检查的登录/注销调用机制,它似乎FB.logout()创建fblo_<appId>饼干1年到期,从返回适当的状态块getLoginStatus()。这似乎是让人们注销的实际机制,我可以理解。但我不明白的是:为什么在成功拨打FB.login()电话时不会删除此cookie?

+0

您是否检查过这些cookie的设置路径? – CBroe

+0

只有一个注销cookie'fblo_ '在我的整个域上用'/'路径设置。所以它很粘,考虑到它一年没有被清除。 – krukid

+0

有没有这个bug /讨论? –

我固定它自己通过编程方式删除的cookie fblo_<appid>两个的FB.login()和FB.logout()

+0

你肯定不想在注销()中做到这一点。试试这个:登录到Facebook。像普通用户一样在您的网站上验证您的应用。然后在登录facebook.com之前从未使用的浏览器中打开您的应用。您将自动登录,因为您已经连接。此时注销,cookie将只在该浏览器上设置。如果您要删除它,您将自动重新登录。 –

我正经历着这个前几天的回调函数,但我没有看到这个问题任何更多。

在任何情况下确保你考虑到这些不同的场景时,测试:

一个人登录到Facebook上,然后登录到您的应用程序。从您的应用程序注销后,该用户仍然登录到Facebook。

一个人登录到您的应用程序和Facebook,作为您的应用程序的登录流程的一部分。从您的应用程序注销后,用户也会从Facebook注销。

一个人登录到另一个应用程序并作为另一个应用程序的登录流程的一部分进入Facebook,然后登录到您的应用程序。从任一应用程序注销后,用户都会从Facebook注销。

https://developers.facebook.com/docs/reference/javascript/FB.logout/


调试提示:

在应用程序选项卡在Chrome中,您可以在左边的面板中选择饼干,然后键入fblo在搜索框中该名称进行筛选。当我拨打FB.login并成功进行身份验证时,我看到fblo Cookie消失 - 所以我认为此问题已修复。

enter image description here

+0

并利用'测试用户'功能为测试创建测试帐户:https://developers.facebook.com/apps/ {YOUR-APP-ID}/roles/test-users / –