我試圖使用Facebook連接與PHP,重要的是用戶將保持登錄到我的網站,即使會話被銷燬後。Facebook連接的PHP - 保持登錄狀態
我已經從SDK運行了with_js_sdk.php示例。在這種情況下,用戶必須在每個會話中重新登錄。與example.php方法它不會發生,並且用戶保持永久登錄。
我想問爲什麼是這樣?並且有可能讓第一種方法使用戶始終登錄?
順便說一下,我想我需要PHP + JS組合,因爲我不想在登錄時刷新頁面。這是真的嗎?
謝謝...
我試圖使用Facebook連接與PHP,重要的是用戶將保持登錄到我的網站,即使會話被銷燬後。Facebook連接的PHP - 保持登錄狀態
我已經從SDK運行了with_js_sdk.php示例。在這種情況下,用戶必須在每個會話中重新登錄。與example.php方法它不會發生,並且用戶保持永久登錄。
我想問爲什麼是這樣?並且有可能讓第一種方法使用戶始終登錄?
順便說一下,我想我需要PHP + JS組合,因爲我不想在登錄時刷新頁面。這是真的嗎?
謝謝...
兩個例子都應該離開登錄的用戶。必要的登錄數據被存儲在cookie中,並重新使用。
可能是什麼問題:我發現「$ user = $ facebook-> getUser();」即使通過用戶登錄,調用有時也會失敗。我的建議並不是依賴那個調用,而是跳到下面的try/catch塊,並從那裏設置用戶。
try { $ user_profile = $ facebook-> api('/ me'); $ user = $ user_profile ['user_id']; (FacebookApiException $ e){ $ user_profile = false; $ user = null; }
由於這看起來更可靠。
如果失敗了,您可以自己控制它。步驟是:
你不應該需要這最後一種方法(除非會話/設備之間共享令牌,或者希望離線訪問),因爲這是Facebook的SDK做什麼 - 但它確實有助於你控制和理解興田過程更多。
最後,你可以做所有登錄/ getAccessToken /存儲cookie的方法雖然JavaScript代碼,從而在登錄用戶,並無需刷新頁面記住它。只需在auth.login上檢查相應的操作即可記住cookie並更改頁面內容 - 不要重新加載頁面。
下次用戶刷新頁面/返回到站點時,cookie將被PHP讀取。請記住在註銷時清除cookie。
所以你可以做你想做的,是的。
爲了讓用戶始終登錄,您可以使用具有更長過期時間(您自己的cookie而不是由fb設置的cookie)的cookie。 $ user = $ facebook-> getUser(); 獲取有關用戶登錄狀態的cookie。 如果過期用戶不再使用。 您可以使用更長的過期時間設置您自己的cookie。 –