php-Facebook 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().

解决方法:

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

希望有帮助!

上一篇:PHP-Codeigniter在CLI上调用私有函数


下一篇:PHP在HTML中轻松进行循环(Codeigniter)