我知道之前已经多次询问这个问题,现在我花了大约2个小时来浏览其他所有答案并尝试解决方案,但没有一个能够奏效。基本上问题是我使用Facebook PHP SDK来记录我的用户。这一点很好。当我想将用户从我的网站和Facebook登录时虽然它不起作用。我的网站建立在codeigniter,如果它影响任何东西。这就是我所拥有的:
$this->load->library('facebook');
$logout_url = $this->facebook->getLogoutUrl(array('next' => site_url()));
redirect($logout_url);
此用户被重定向确定但是如果我去facebook.com我仍然登录。这应该将用户从Facebook登录,如果不是这样的话?我已经尝试了很多,例如清除本机php会话,取消设置cookie等等:
$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 :(得分: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
答案 1 :(得分:0)
我通过评论下面的一行解决了我的问题。现在我的用户可以退出。
$this->facebook->destroySession();