标签:codeigniter facebook facebook-php-sdk php
我正在使用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本机会话.
希望有帮助!
标签:codeigniter,facebook,facebook-php-sdk,php 来源: https://codeday.me/bug/20191201/2082189.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。