我正在使用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()
。
答案 0 :(得分:3)
facebook SDK使用本机PHP会话,但codeigniter不使用。你想要做的是在你的注销控制器中添加session_destroy();
来杀死PHP原生会话。
希望有所帮助!