【问题标题】:Facebook logout not working with PHP SDKFacebook 注销不适用于 PHP SDK
【发布时间】:2013-07-31 10:26:29
【问题描述】:

我知道这个问题之前已经被问过很多次了,现在我已经花了大约 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 在他们的最后存在一个错误,它没有在应该注销的时候注销。有人知道是不是这样吗?

【问题讨论】:

    标签: php facebook codeigniter facebook-php-sdk


    【解决方案1】:

    我通过注释掉下面的行来解决我的问题。现在我的用户可以退出了。

    $this->facebook->destroySession();
    

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

      • 他说问题是退出 Facebook,而不是他自己的网站,所以我不确定这是否是本地会话问题。
      猜你喜欢
      • 2011-05-31
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多