2009-10-23 71 views
2

當用戶第一次打我的網站的登錄畫面,我有Facebook連接確定用戶是否登錄到Facebook和重新載入頁面,如果真:Facebook連接註銷後,Facebook的PHP類仍然認爲用戶登錄

<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script> 

<script type="text/javascript"> 
    FB.init('MY_API_KEY', '/xd_receiver.htm', { 'reloadIfSessionStateChanged': true }); 
</script> 

當重新加載頁面,我的後端PHP代碼檢查用戶是否登錄到Facebook上,然後自動記錄它們在我的網站:

$Facebook = new Facebook(MY_API_KEY, MY_APP_SECRET); 

if ($Facebook->get_loggedin_user()) { 
    // Log the user in. 
} 

這部分工作正常。問題在於註銷功能。我註銷鏈接目前看起來是這樣的:

<a href="#" onclick="FB.Connect.logoutAndRedirect('http://my.url/logout/');">Log Out</a> 

是單擊時,用戶被成功註銷了Facebook上,但後端的Facebook PHP對象仍然認爲在用戶登錄($Facebook->get_loggedin_user()仍然返回他們的用戶ID),所以我的登錄代碼會自動再次登錄。

所以我發現的問題是,即使Facebook連接記錄用戶出,後端Facebook PHP對象仍然認爲用戶登錄。有誰知道如何克服這一點?我可以不用我的PHP代碼自動登錄用戶嗎?

感謝您的幫助!

+0

嘗試有問題​​的網頁上傾倒你的Facebook相關的cookies。我不認爲應該有什麼,當你到達那裏。 – 2009-10-23 23:52:43

+0

我描述了這個相同的問題http://stackoverflow.com/questions/1546277/trouble-logging-out-of-a-facebook-connect-site-and-destroying-sessions – Xeoncross 2009-11-10 23:18:13

回答

0

您是否可以設置您自己的變量來標記何時發生這種情況,作爲解決方法?

+0

是的,我可以,但我想一些更優雅。看起來我的場景很常見?別人沒有按照我的方式去做嗎? – 2009-10-23 21:34:33

1

因爲我不得不清除我的完整的會話(用戶已被註銷),這個工作完全正常,我:

1)在Facebook的註銷用戶:

 
$redirectUrl = $this->getFacebook()->getLogoutUrl(array(
      'next' => $this->baseUrl.'/logout', 
     )); 
$this->redirect($redirectUrl); 

2)從Facebook在我的web應用程序註銷用戶,後反彈回:

 
public function logoutAction() 
{ 
     session_destroy();   
     // redirect back to start page 
     return $this->redirect($this->baseUrl); 
}