用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1498|回复: 2
收起左侧

[HELP] 新人求教,CI集成QQ互联,回调获取的用户数据怎么写入session?

[复制链接]
发表于 2016-4-25 19:21:32 | 显示全部楼层 |阅读模式
各位大神,新人最近研究CI的QQ登录,之前试过官方的SDK没有成功,现在自己研究的调用方法步骤基本完成,求问获取的QQ用户信息怎么写入session,以及怎么与本地用户绑定?麻烦各位大神指教指教。非常感谢!!!
下面是我qqcallback.php里面的回调以后获取的内容代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php if($user){?>QQ登陆成功<?php }?></title>
</head>
<body>
<img src="<?php echo $user['figureurl_2'];?>" />你好<?php echo $user['nickname'];?>
<br  />
<?php var_dump($user);?>
</body>
</html>
发表于 2016-4-26 11:07:39 | 显示全部楼层
首先你要明白这种涉及第三方登陆的用户表应该怎么设计最合理。按照我的做法,会设计两个表,一个表叫users,存储用户的基础信息,如头像,姓名,昵称,部门,性别,email等,属于个人信息的部分。 另一个表叫members, 存储用户的口令,主要是用户名和 password,用user_id关联上users。涉及到第三方登陆时, members 需要保存openid, provider, token, expried, 等信息。
这样做的好处是, members表可以任意扩展, 一个user可能对应多个member,因为一个用户可能通过QQ或者微信或者微博登录,但是对应的user信息确是一样的。  

当然也有偷懒的做法,就是users和members表合并, 基本上上述的一些信息都还是要保存的, 有些字段会冗余。 下面的建议是按照两个表的设计来解决的。

$user中有一个值很重要,openid. 使用openid和provider作为主键可以保存到session中。provider是自定义的一个字段,指定使用的是什么第三方平台,如qq或者sina或者weixin等。

PHP复制代码
$this->model->load('user_model', 'users');
$user['id'] = $this->users->insert($user); //保存到users表。
$this->load->library('session');
$this->session->set_userdata('user', $user);  //已保存到session中了。
 
$member['provider'] = 'qq';
$member['openid'] = '';
$member['expried'] = 123333;
$member['user_id'] = $user['id'];
 
$this->load->model('member_model', 'members');
$this->members->insert($member);
复制代码


你所写的这个页面,要完成session的保存。如果要绑定用户,可以在这个页面写个注册页面。 注册页面没什么特别的,不过是点击【注册】后 发送到后台需要做的事情可能不一样:

PHP复制代码
$register_data = $this->input->post(NULL, true);
$this->load->model('member_model', 'members');
$user = $this->session->userdata('user');
$register_data['user_id'] = $user['id'];
$this->members->insert($register_data);
复制代码



 楼主| 发表于 2016-4-26 20:18:10 | 显示全部楼层
yuzhigang5460 发表于 2016-4-26 11:07
首先你要明白这种涉及第三方登陆的用户表应该怎么设计最合理。按照我的做法,会设计两个表,一个表叫users ...

真的是太好了,多谢您耐心的回复,我好好看看,用您的方法试一下

本版积分规则