我正在使用Codeigniter 3.1.2并尝试在我的应用中实现Facebook登录。当用户登录并授权我的应用程序时,我想在我的数据库中保存一些用户信息,然后创建会话。
除了创建会话之外一切正常,这就是用户在成功授权我的应用程序后没有登录我的应用程序的原因。
点击FB登录按钮后,代码正在解雇
FB.login(function (response) {
if (response.status === 'connected') {
var site_url = $('#site_url').val();
$.ajax({
url: site_url + 'weapons/register',
type: 'post',
data: {
email: response.email
}
});
window.location.href = '<?php echo site_url_tr('profile'); ?>';
}
}, {scope: 'public_profile,email'});
这是我的注册方法
public function register() {
$email = $this->input->post('email');
$user = array(
'email' => $email
);
$u = $this->pm->total_item('users', 'email', $email);
if ($u < 1) {//if user not exist then create
$this->db->set('reg_date', 'NOW()', FALSE);
$user_id = $this->pm->insert_data('users', $user, TRUE);
}else{
$user = $this->pm->get_row('email', $email,'users');
$user_id = $user['id'];
}
$user_data = array(
'user_id' => $user_id,
'username' => $email,
'email' => $email,
'user_type' => 'user'
);
$this->session->set_userdata($user_data);
}
$this->session->set_userdata($user_data);
所以这是我尝试创建会话而不能正常工作。而不是从上面的Profile
代码重定向到JS
控制器。感谢
我有自动加载的
session
库和驱动程序。任何想法我怎么能 用户最多授权我的应用时创建会话(通过Codeigniter) 欢迎
答案 0 :(得分:1)
确保您在文件中包含$this->load->library('session');
或自动加载。
Ajax调用是asynchrone:在您有机会完成请求之前,您正在重定向。
$。AJAX({ //参数 })。完成(函数(){ //重定向到这里 });
希望它有所帮助。