Facebook注销不使用PHP SDK

时间:2013-07-31 10:26:29

标签: php facebook codeigniter facebook-php-sdk

我知道之前已经多次询问这个问题,现在我花了大约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最终存在一个错误,并且它没有在应该的时候退出。有人知道是不是这样吗?

2 个答案:

答案 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();