2

我有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 /討論? –

回答

0

我固定它自己通過編程方式刪除的cookie fblo_<appid>兩個的FB.login()和FB.logout()

+0

你肯定不想在註銷()中做到這一點。試試這個:登錄到Facebook。像普通用戶一樣在您的網站上驗證您的應用。然後在登錄facebook.com之前從未使用的瀏覽器中打開您的應用。您將自動登錄,因爲您已經連接。此時註銷,cookie將只在該瀏覽器上設置。如果您要刪除它,您將自動重新登錄。 –

-1

我正經歷着這個前幾天的回調函數,但我沒有看到這個問題任何更多。

在任何情況下確保你考慮到這些不同的場景時,測試:

一個人登錄到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 / –