簡體   English   中英

$ facebook-> getLogoutUrl(); 鏈接不會將用戶退出Facebook

[英]$facebook->getLogoutUrl(); link doesn't log user out of facebook

我當前的用戶故事是user1登錄到我的網站和facebook(這些帳戶已連接等)。

User1退出我的網站,但不登錄Facebook。

在此user2登錄到他的帳戶之后,來自user1的剩余會話將與user2與我的站點的交互以及他們發布的人員相關聯。

因此,為了解決這個問題,我檢查了登錄的用戶是否實際擁有當前登錄的facebook(這會導致他們進入facebook登出等),並顯示一個應該允許用戶注銷的鏈接。 。

點擊鏈接后,他們將轉到Facebook並返回該網站。 但是,如果您打開一個新標簽並轉到Facebook,User1仍然會登錄。

我怎樣才能使這個鏈接起作用..發生了什么。 這是api的錯誤還是什么?...

編輯:我繼續使用有價值的用戶ID加載和有效的訪問權限來測試,但我還沒有讓注銷鏈接工作。

有點晚了,但這里有我的貢獻:

在生成注銷URL時使用params,重定向到使用Facebook API函數銷毀會話的頁面。

這是一個例子:

$logoutUrl = $facebook->getLogoutUrl(array("next" => "http://mydomain.com/page4logout"));

在page4logout中,您可以實例化facebook對象並執行以下命令:

$facebook->destroySession();

之后,您可以進行重定向。

手動刪除facebook cookie和會話。 以下是我解決問題的方法,我認為這是Facebook的一個錯誤:

setcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]);
unset($_SESSION['fb_'.$this->getAppId().'_code']);
unset($_SESSION['fb_'.$this->getAppId().'_access_token']);
unset($_SESSION['fb_'.$this->getAppId().'_user_id']);
unset($_SESSION['fb_'.$this->getAppId().'_state']);

$ this-> getAppID是你的Facebook App ID,應該是明確的; o)

您可以通過一起使用PHP SDK和JavaScript SDK來檢查這一點。

當用戶訪問您的站點時,調用FB.getLoginStatus()並檢查authResponse.userID與PHP SDK在$facebook->getUser();返回的authResponse.userID相匹配$facebook->getUser(); (如果有幫助的話,你可以通過AJAX調用來實現)。

你知道,如果用戶ID不匹配,那么這里有問題。 調用$ facebook-> getLogoutUrl()應該將用戶從您的站點和Facebook中注銷,但如果沒有,請嘗試在代碼中使用session_destroy()來清除會話。 然后將用戶重定向回$ facebook-> getLoginUrl()並讓他們再次登錄。 這將糾正用戶ID中的不匹配,您可以在他們返回您的站點時重復此過程。

我在其他應用程序上看到過這種情況,這讓我相信這是一個facebook問題。 JavaScript SDK似乎不會檢查cookie是否仍然有效(如果它已經存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM