Facebook SDK注销无法正常工作

时间:2012-03-11 20:03:09

标签: php facebook codeigniter facebook-php-sdk

我正在使用Facebook PHP-SDK登录用户,它运行正常。我遇到了正确记录用户的问题。单击注销按钮然后单击登录按钮后,它不会将用户重定向到Facebook的登录页面,而是将其记录到我的站点,就像注销不成功一样。这是我登录用户的代码:

function authenticate_user()
{
    $CI = & get_instance();
    $CI->config->load("facebook",TRUE);
    $config = $CI->config->item('facebook');
    $CI->load->library('facebook', $config);

    $user = $CI->facebook->getUser();

    if ($user)
    {
        try
        {
            $user_profile = $CI->facebook->api('/me');
            return $user_profile;
        }
        catch (FacebookApiException $e)
        {
            error_log($e);
        }
    }

    return FALSE;

}

public function signin()
{
    $user_profile = authenticate_user();
    if (!$user_profile)
    {   
        $loginUrl = $this->facebook->getLoginUrl(array('scope' => 'email'));
        redirect($loginUrl);
    }

    $this->load->model("user_model");

    if ($userRow = $this->user_model->user_exists($user_profile["id"]))
    {
        set_session($user_profile, $userRow->privileges);
        redirect("member_controller/members");
    }
}

这是我的退出代码:

public function fb_signout()
{
    $params = array( 'next' => 'http://www.' + $host + '/index.php/authentication_controller/signout');
    redirect($this->facebook->getLogoutUrl($params)); // $params is optional.
}

public function signout()
{
    $this->session->sess_destroy();
    redirect("http://www." + $host + "/");
}

更新

SDK使用本机PHP会话,并且调用$this->session->sess_destroy()不会销毁它,我需要在我的注销功能中加入session_destroy()

1 个答案:

答案 0 :(得分:3)

facebook SDK使用本机PHP会话,但codeigniter不使用。你想要做的是在你的注销控制器中添加session_destroy();来杀死PHP原生会话。

希望有所帮助!