注销facebook连接会话

时间:2012-04-30 18:08:51

标签: facebook codeigniter session connect logout

我正在尝试将我的网站与Facebook连接集成以处理facebook注册和Facebook登录。我正在使用codeigniter框架。但我现在遇到了这个问题:

  1. 当前的Facebook登录用户是“test1”。我去我的网站注册Facebook,一切正常,“test1”的信息存储在我的数据库中。但是,在我从facebook登录test1并在facebook上登录“test2”之后,我回到我的网站再次与facebook进行注册,它仍然存储了“test1”的信息。

  2. 我使用离子身份验证库来处理用户从我的网站注销。然而,在我切换Facebook测试用户帐户并再次“登录Facebook”后,它仍然获得以前的Facebook用户。

  3. 基于上述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
    }
    

1 个答案:

答案 0 :(得分:1)

我认为你需要做的是为你的getLogoutUrl()调用设置“next”参数。像这样:

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

然后,在设置为“next”的控制器中,您需要清除会话数据。

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

如果有帮助,请告诉我。