QQ登录官方网站有详细的文档,我想大家根据文档配置,应该没什么大的问题。但已经登陆成功以后呢,登陆成功以后我们更应该如何处理?下面这个类我想应该能解决大家的问题。
以下的代码是本人从网上分享下来的,现在分享给大家
class LoginAction extends Action { public function _initialize(){ //引入QQ登陆类 import('@.ORG.Connect.qqConnectAPI'); //实例化 $this->QC = new QC(); } //开始登陆 public function qq_login(){ $this->QC->qq_login(); } //回调 public function qq_callback(){ $token = $this->QC->qq_callback(); $openid = $this->QC->get_openid(); $QC = new QC($token,$openid); $arr = $QC->get_user_info(); $db=M("Member"); $where['qq_openid']=$openid; //判断此QQ是否注册 唯一标识符openid 在表里加了个qq_openid为唯一哈 $isqq=$db->where($where)->find(); if($isqq){ //写入登陆状态 session('id', $isqq['id']); session('account', $isqq['account']); session('nickname', $isqq['account']); session('email', $isqq['email']); session('lastLoginTime', $isqq['lastLoginTime']); session('login_count', $isqq['login_count']); $this->success('登陆成功!',U('Member/index')); }else{ $data['qq_openid']=$openid; //QQ登陆唯openid $data['account']=$arr['nickname']; //用户名 $data['nickname']=$arr['nickname']; //网名 $data['thumb']=$arr['figureurl_2']; //头像 $data['status']='1'; //用户状态为启用 //如果用户名存在 $name['account']=$arr['nickname']; $isname=$db->where($name)->find(); if($isname){ //用户名存在添加随机数 $data['account']=$arr['nickname']."_".rand(1000,9999); } //判断是否写入成功 if($id=$db->add($data)){ //写入登陆状态 session('id', $id); session('account', $data['account']); session('nickname', $data['account']); session('email', '未填写'); session('lastLoginTime', time()); session('login_count', '1'); $this->success('注册成功!',U('Member/index')); }else{ $this->error('注册失败!',U('Member/login')); } } } }
今天刚根据QC SDK for php 2.0文档在自己的网站上添加了一个QQ登录功能,刚开始遇到一点小问题,如可能未开启curl支持的问题但现在已经成功解决了,也成功连上,切成功获取登陆QQ的用户信息,但却不知道在成功登陆以后,返回的时候应该怎么处理,也是这个时候刚好发现这篇文章,所以把我的问题也给解决了,觉得特别赞,所以也就收藏,并且分享给更多人了。