2013-07-31 63 views
2

我知道這已被問及很多次,現在我花了大約2個小時,通過其他所有答案拖網,嘗試解決方案,但都沒有奏效。基本上問題是我使用Facebook PHP SDK來登錄我的用戶。這一點很好。當我想將用戶從我的網站和Facebook註銷時,雖然它不起作用。如果這影響到任何內容,我的網站是建立在codeigniter。以下是我有:Facebook註銷不能與PHP SDK一起工作

$this->load->library('facebook'); 
$logout_url = $this->facebook->getLogoutUrl(array('next' => site_url())); 
redirect($logout_url); 

該用戶被重定向確定,但如果我去facebook.com我在仍處於登錄這應該註銷用戶的Facebook,以及應該不是嗎?我曾嘗試alsorts如清除本地PHP會議上,你重置餅乾等,像這樣:

$config = array(
    'appId' => FB_APP_ID, 
    'secret' => FB_APP_SECRET, 
    'fileUpload' => true, // Indicates if the CURL based @ syntax for file uploads is enabled. 
); 

$this->load->library('facebook', $config); 

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

$logout_url = $this->facebook->getLogoutUrl(); 

$this->facebook->destroySession(); 

try { 
    $this->facebook->destroySession(); 
    setcookie('fbs_'.$this->facebook->getAppId(), '', time()-100, '/', base_url());     
} catch (Exception $e) { 
    //$this->facebook->clearAllPersistentData(); Protected method 
} 
$this->session->sess_destroy(); 

所以我能想到的唯一的事情是,有與Facebook的錯誤在他們的結束,它不是註銷時這應該。任何人都知道是否是這種情況?

回答

0

Codeigniter不使用本機PHP會話 - CI將會話存儲在cookie中。你可以閱讀關於它here

但是,Facebook確實使用了本機PHP會話。所以你會發現破壞Codeigniter會話不會破壞Facebook會話。

你可以嘗試這樣的事:

// Destroy CodeIgniter Session 
$this->session->sess_destroy(); 

// Destroy Facebook Session using Facebook function 
$this->facebok->destroySession(); 

// Maybe even destroy all native sessions as overkill 
session_destroy(); 

我這樣做以後想象,沒有辦法的會議將/仍能堅持。這和PHP和Codeigniter一起發生。請參閱:logout facebook connect session

+0

仍然沒有工作恐怕 – geoffs3310

+1

他說,問題是註銷Facebook的,而不是他自己的網站,所以我不知道這將是一個本地會話的問題。 – Mike

0

我通過評論下面的行解決了我的問題。現在我的用戶可以註銷。

$this->facebook->destroySession();