第一步、创建应用
登录 QQ 互联创建网站应用,QQ 互联地址:https://connect.qq.com
注意:申请前提是网站域名必须通过备案
第二步、下载 SDK
下载官方 SDK 或者使用 composer 调用第三方 SDK
官方 sdk 下载路径:https://wiki.connect.qq.com/sdk 下载
Composer SDK 安装命令:composer require jonexyz/qqconnect
第三步、梳理 QQ 授权登录流程
- 实例化 QC 类 执行 qq_login() 方法,会生成一个 QQ 的登陆 URL,访问该 URL,进行授权登陆。
- 授权登陆成功,会携带 code 跳转至设置的回调地址,使用 qq_callback() 接收 code 值,(code 值是获取 access_token 的凭证),从而获取 access_token
- 凭借 access_token 获取 用户的 open_id
- 有了 access_token 与 open_id 执行 setKeysArr() 方法,设置接口的公共请求参数。
- 执行 get_user_info() 方法获取用户信息,写入数据表
第四步、代码示例
代码示例使用的是 jonexyz/qqconnect
SDK,仅需实现 QQ 登录与回调两个方法即可
$appid = "102***947" // 应用 appid
$appkey = "FuMaaMwJT***ew0pP" // 应用 appkey
$callback = "https://www.***.cn/login/qcallback" // 应用授权回调地址
$scope = "get_user_info,add_share" // 申请获取的应用权限,多个以英文逗号相隔
use Jonexyz\QQConnect\QC;
// qq 登录
public function qq()
{$qc = new QC($appid,$appkey,$callback,$scope);
return redirect($qc->qq_login());
}
// 回调操作
public function qqCallback(Request $request)
{$qc = new QC($appid,$appkey,$callback,$scope);
if(!$request->get('code')){if(cache('QC_userData')['openid']){$qc->setKeysArr($access_token, $openid);
$info = $qc->get_user_info();
$data = ['name'=>$info['nickname'], // 昵称
// ''=>$info['gender_type'], // 性别 1 男
// ''=>$info['province'], // 省份
// ''=>$info['city'], // 城市
// ''=>$info['figureurl_2'], // 头像
// ''=>$info['year'], // 出生年分
];
// TODO 信息获取成功,保存用户数据,实现用户登录
// 进入登陆成功页
return redirect(url('user'));
}else{
// 授权回调失败,显示 404
abort(404);
}
}else{$access_token = $qc->qq_callback();
if($access_token){$openid = $qc->get_openid();
$user = User::where('qq_openid',$openid)->first();
if($user){
// TODO 信息获取成功,保存用户数据,实现用户登录
// 缓存数据,access_token 有效期 30 天
cache('QC_userData',['access_token'=>$access_token,'openid'=>$openid], 29*24*3600);
// 进入登陆成功页
return redirect(url('user'));
}else{
// 重新访问回调地址
return redirect($callback);
}
}else{return abort(404);
}
}
}
正文完
有偿技术支持加微信