2

これは以前に何度も尋ねられたことを知っており、他のすべての回答を調べて解決策を試すのに約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にバグがあり、ログアウトすべきときにログアウトしないということです. これが事実かどうか知っている人はいますか?

4

2 に答える 2

0

Codeigniter はネイティブ PHP セッションを使用しません。CI はセッションを Cookie に保存します。ここでそれについて読むことができます。

ただし、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 で常に発生します。参照: Facebook 接続セッションのログアウト

于 2013-07-31T15:00:33.063 に答える