首页 文章

注销facebook连接会话

提问于
浏览
0

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

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

  • 我使用ion auth库来处理用户从我的站点注销 . 然而,在我切换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
}

1 回答

  • 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');
        }
    }
    

    如果有帮助,请告诉我 .

相关问题