【问题标题】:logout facebook connect session注销 facebook 连接会话
【发布时间】:2012-05-10 10:25:54
【问题描述】:

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

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

  2. 我使用 ion auth 库来处理用户从我的站点注销。但是,在我切换 facebook 测试用户帐户并再次执行“使用 facebook 登录”后,它仍然会获得以前的 facebook 用户。

基于以上 2 个案例,facebook 会话似乎没有被清除?纠结这个问题很久了,求大神帮忙!

我使用它来获取用户数据: $fb_usr = $this->fb_connect->用户; (好像不管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
}

【问题讨论】:

    标签: facebook codeigniter session connect logout


    【解决方案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');
        }
    }
    

    如果有帮助,请告诉我。

    【讨论】:

    • 此外,我认为您还需要在控制器中调用 $facebook->destroySession() 。 (编辑原始帖子以包含此内容)
    • 嗨@ametren,是的,确实,我发现我忘了调用destroysession函数...谢谢!
    • 对不起,@nicky,我不确定你指的是什么。您有什么需要我帮助的问题吗?
    • @ametren 我试图使用 $facebook->destroySession() 破坏会话,之后我使用了 php session_destroy() ,现在它的工作
    • 哦,是的,我也发现这也是多余的——很高兴它可以工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2012-01-02
    • 2012-11-25
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多