0

FacebookのサインアップとFacebookのログインを処理するために、自分のサイトをFacebook接続と統合しようとしています。私はcodeigniterフレームワークを使用しています。しかし、私は今この問題を抱えています:

  1. 現在のFacebookログインユーザーは「test1」です。Facebookにサインアップするために自分のサイトにアクセスすると、すべてが正常に機能し、「test1」の情報がデータベースに保存されます。しかし、Facebookからtest1をログアウトし、Facebookで「test2」にログインした後、自分のサイトに戻ってFacebookに再度サインアップすると、「test1」の情報が保存されたままになります。

  2. 私は自分のサイトからのユーザーログアウトを処理するためにionauthライブラリを使用しています。ただし、Facebookのテストユーザーアカウントを切り替えて「Facebookでログイン」を再度実行すると、前のFacebookユーザーが取得されます。

上記の2つのケースに基づいて、Facebookセッションはクリアされなかったようですか?私は長い間この問題に苦しんでいます、助けてください!

これを使用してユーザーデータを取得します:$ fb_usr = $ this-> fb_connect-> user; (Facebookユーザーがどのように変わっても、fb_connectは常に同じユーザーを返すようです)

fb_connectは次のようになります。

    <?php
        include(APPPATH.'libraries/facebook/facebook.php');

        class Fb_connect extends Facebook{

            //declare public variables
            public  $user           = NULL;
            public  $user_id        = FALSE;

            public $fbLoginURL  = "";
            public $fbLogoutURL = "";

            public $fb          = FALSE;
            public $fbSession   = FALSE;
            public $appkey      = 0;

            //constructor method.
            public function __construct() 
            {
                        $CI = & get_instance();
                        $CI->config->load("facebook",TRUE);
                        $config = $CI->config->item('facebook');
                        parent::__construct($config);
                        $this->user_id = $this->getUser(); // New code
                        $me = null;
                        if ($this->user_id) {
                            try {
                                $me = $this->api('/me');
                                $this->user = $me;
                                } catch (FacebookApiException $e) {
                                    error_log($e);
                                }
                }   

                if ($me) {
                    $this->fbLogoutURL = $this->getLogoutUrl();
                } else {
                    $this->fbLoginURL = $this->getLoginUrl();
                }           
            } //end Fb_connect() function
}
4

1 に答える 1

1

getLogoutUrl()呼び出しの「次の」パラメータを設定する必要があると思います。このようなもの:

$args['next'] = site_url('logout'); // replace "logout" with your controller which will clear the session
$fbLogoutURL = $facebook->getLogoutUrl($args);

次に、「次へ」として設定されたコントローラーで、セッションデータをクリアする必要があります。

class Logout extends CI_Controller {
    public function index() {
        $facebook->destroySession();       
        $this->session->sess_destroy();  // Assuming you have session helper loaded
        $this->load->view('logout');
    }
}

それが役に立ったら教えてください。

于 2012-05-03T01:33:43.210 に答える