2012-08-08 60 views
0

所以,我已經有一段時間了,經歷了一堆不同的問題,仍然沒有解決方案。Facebook註銷不起作用(會話總是重新創建)。 CakePHP + Facebook插件

如果我定期登錄,一切正常,我可以按預期登出。但是,如果我使用Facebook登錄(授權應用程序),則無法註銷,除非我手動刪除瀏覽器菜單中的Cookie。

按照這種邏輯,我要摧毀在使用此代碼註銷行動餅乾(後我修改會話設置工作跨子域,我的具體情況):以後每次

function logout() { 
     if ($this->Cookie->read('Auth.User')) { 
      $this->Cookie->delete('Auth.User'); 
     } 
     $this->Auth->logout(); 
     unset($_SESSION['fb_MYAPP_ID_user_id']); 
     unset($_COOKIE['fbm_MYAPP_ID']); 
     unset($_COOKIE['fbsr_MYAPP_ID']); 
     unset($_COOKIE['CAKEPHP']); 
     //pr($_SESSION);pr($_COOKIE);exit(); //here I see that the cookies are in fact deleted 
     $this->redirect($this->Auth->logout()); 
     $this->redirect('/login'); 
    } 

但註銷重定向它將用戶移回,登錄並重新創建會話/ cookie。

我經歷了很多SO問題和答案,沒有爲我工作。有任何想法嗎?

回答

1

您不能簡單地從cookie容器中取消設置cookie,這僅僅是請求中包含的cookie的服務器端表示。

要刪除Cookie,您需要設置完全相同的cookie(域,路徑,名稱),但已過期 - 當客戶端讀取時,這將導致cookie不會與下一個請求一起發送。

您可以在https://github.com/facebook/facebook-php-sdk/blob/master/src/base_facebook.php#L132中看到這是如何完成的。

+0

啊謝謝,完全錯過了... – 2012-08-09 11:05:44