2011-09-21 104 views
0

在某些時候,Facebook更改了fbml登錄按鈕的行爲,以便在用戶已登錄時它不會顯示您的網站通過FB。

這一切都很好,但我遇到了PHP SDK認爲用戶未登錄的情況,但FBML按鈕確實認爲用戶已登錄,因此它不是顯示自己。

有關我如何進一步調試的任何想法?這可能是一個邊緣情況,但我需要修復它,因爲當FB按鈕丟失時用戶將無法登錄。

回答

1

下面是我們對遇到同樣問題的人所瞭解的最新情況。

由於我們將Facebook PHP SDK從早期版本升級到3.1.1,因此問題出現。

通過代碼追蹤,我們瞭解到在FB PHP SDK的以前版本中,會話狀態存儲在名爲fbs_的cookie中。新版本的SDK無法從此cookie恢復會話。相反,它依賴於一個名爲fbsr_的cookie來存儲已簽名的請求。

所以,如果fbs_設置一定的方式,在FB:登錄按鈕認爲您已登錄,但3.1.1 SDK不認爲你已經登錄

我們試圖手動清零fbs_XXX。通過代碼實現cookie,但每次fb:login-button完成時都會恢復該cookie。最後,我們最終使用$ facebook-> getLoginUrl()創建了我們自己的登錄按鈕,這看起來像是Facebook希望你做的事情的新方式。