首先去QQ互联下载SDK 放入Vendor下
用户点击QQ登录是执行下面方法
public function login_qq(){ Vendor('qq.qqConnectAPI'); $qc = new \QC(); $qc->qq_login(); }
在用户进行授权之后 QQ会向回调地址进行发送数据
我们在控制器里面接收并做业务处理
//QQ登录回调 public function login_qq_back(){ Vendor('qq.qqConnectAPI'); $qc = new \QC(); $access_token = $qc->qq_callback(); $open_id = $qc->get_openid(); $qc = new \QC($access_token,$open_id); $user_info = $qc->get_user_info(); $user = D('member')->where(array('openid'=>$open_id))->find();//查询用户openid //此处是当用户进行QQ登录授权之后还需要进行手机号的绑定!如果不需要可直接删除此段进行 if (!$user) { session('openid',$open_id); $this->assign('user_info',$user_info); $this->display(); exit; }else{ //下方为已经登记过的openID的记录 if ($user['is_lock']) { $this->error('用户被锁定!', '', array('input' => '')); } //更新数据库的参数 $data = array('id' => $user['id'], //保存时会自动为此ID的更新 'login_time' => date('Y-m-d H:i:s'), 'login_ip' => get_client_ip(), 'login_num' => $user['login_num'] + 1, ); //更新数据库 M('member')->save($data); $uf = $request . '.' . md5($data['nickname']) . '.' . get_random(6); //检测因子 session('uid', $user['id']); set_cookie(array('name' => 'uid', 'value' => $user['id'])); set_cookie(array('name' => 'nickname', 'value' => $user['nickname'])); set_cookie(array('name' => 'group_id', 'value' => $user['group_id'])); //20140801 set_cookie(array('name' => 'login_time', 'value' => $user['login_time'])); set_cookie(array('name' => 'login_ip', 'value' => $user['login_ip'])); set_cookie(array('name' => 'status', 'value' => $user['status'])); //激活状态 set_cookie(array('name' => 'verifytime', 'value' => time())); //激活状态 set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识 //因为前段是弹出窗口进行授权的。所以这里要执行JS的代码进行关闭窗口并刷新父窗口 echo '<script>opener.location.reload(); window.close();</script>'; exit; } }
下面方法是用户进行绑定手机号的实现方法,需要的小伙伴可以参考一下!包含了手机验证码 手机验证码获取可以使用自己的逻辑给用户发送验证码
public function login_qq_int(){ if(IS_POST){ $data = I('post.',' ','htmlspecialchars'); $validate = array( array('email', 'require', '手机号不能为空'), array('code', 'require', '请输入手机验证码'), ); $db = M('member'); if (!$db->validate($validate)->create()) { $this->error($db->getError()); } $code = I('code',0,'intval'); if ((int)session('code') !==$code ) { session('code',null); $this->error('手机验证码不正确或验证码已经失效,请重新获取', '', array('input' => 'code')); } //检测手机号是否存在 $user_info = $db->where(array('email'=>$data['email']))->find(); if($user_info){ $user_info['login_time'] = date('Y-m-d H:i:s'); $user_info['login_ip'] = get_client_ip(); $user_info['openid'] = session('openid'); $request = D('member')->save($user_info); $uf = $request . '.' . md5($user_info['nickname']) . '.' . get_random(6); //检测因子 session('uid', $request); set_cookie(array('name' => 'uid', 'value' => $request)); set_cookie(array('name' => 'nickname', 'value' => $user_info['nickname'])); set_cookie(array('name' => 'group_id', 'value' => $user_info['group_id'])); set_cookie(array('name' => 'login_time', 'value' => $user_info['login_time'])); set_cookie(array('name' => 'login_ip', 'value' => $user_info['login_ip'])); set_cookie(array('name' => 'status', 'value' => 0)); set_cookie(array('name' => 'verifytime', 'value' => time())); set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识 session('openid',null); $this->success('登录成功',U('Home/index/index')); }else{ $data['openid'] = session('openid'); $data['reg_time'] = date('Y-m-d H:i:s'); $data['login_time'] = date('Y-m-d H:i:s'); $data['login_ip'] = get_client_ip(); $data['group_id'] = 2; //注册会员 $request = D('member')->add($data); $uf = $request . '.' . md5($data['nickname']) . '.' . get_random(6); //检测因子 session('uid', $request); set_cookie(array('name' => 'uid', 'value' => $request)); set_cookie(array('name' => 'nickname', 'value' => $data['nickname'])); set_cookie(array('name' => 'group_id', 'value' => $data['group_id'])); set_cookie(array('name' => 'login_time', 'value' => $data['login_time'])); set_cookie(array('name' => 'login_ip', 'value' => $data['login_ip'])); set_cookie(array('name' => 'status', 'value' => 0)); set_cookie(array('name' => 'verifytime', 'value' => time())); set_cookie(array('name' => 'uf', 'value' => $uf)); //登录标识 session('openid',null); $this->success('登录成功',U('Home/index/index')); } } }
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号