admin管理员组文章数量:1559110
由于楼主是web开发方向,所以这里就介绍一下web接入qq登录的方法,以及和app的qq登录打通的方法
0、前提
已经有一个在工信部备案过的域名的网站,具体可以查询工信部的备案页面(请注意这里的信息很重要,会影响之后qq登录申请时的资料填写)
工信部查询域名备案的网址:http://www.miitbeian.gov/publish/query/indexfirst.action
1、去qq互联申请应用(腾讯有很多个平台,网页的qq登录一定是在qq互联申请,app的是在腾讯开放平台)
qq互联的网址:https://connect.qq/
1.1 成为开发者,并用开发者账号登录(如果之后要和在腾讯开放平台申请的app的qq登录打通的话,请使用相同的开发者账号登录)
1.2 选择创建网页应用
1.3 填写基本信息
此处填写的网站名称必须与工信部域名备案查询页面的“网站名称”一栏填写一样的,否则将无法通过qq互联的审核
1.4 完善资料
网站域名需要填写带http://或者https://的完整域名
网站回调域,需要填写完整的回调地址,
比如你的回调页面是放在 /网站根目录/qq_oauth/callback.php
那么网站回调域需要填写 http://域名/qq_oauth/callback.php
在qq互联改版之前是支持填写多回调域的,比如有一个测试环境 http://dev.example 和一个正式环境 http://www.example
那么网站回调域可以填写为 http://www.example/qq_oauth/callback.php;http://dev.example/qq_oauth/callback.php
两者用分号分隔开,新版的qq互联暂时没有测试过这个功能
提供方建议和工信部域名备案查询页面的“主办单位名称”一栏填写一样的
网站备案号必须与工信部域名备案查询页面的“网站备案/许可编号”一栏填写一样的
图标可以不传
1.5 完成创建,等待qq互联的审核(这个审核如果资料和工信部备案的填写的一致,那么还是挺快就能获得通过的,楼主的经验是1-2天)
2、通过审核之后,能获取到app id和app key
这时候,使用官方的sdk,就能快速完成开发(楼主用的是php的sdk,第三方登录和获取用户信息,亲测可用)
这里要提醒的是,配置文件 /api/comm/inc.php 中
“callback”需要和在qq互联填写的网站回调域保持一致(qq互联中,如果填写的是两个环境的,那么此处根据环境不同填写一个回调地址)
两边回调地址填写的不同会造成调不通
3、如果网站的qq授权回调已经调通,需要打通app的qq登录和网站的qq登录,那么请接着往下做
3.1 如图中所需资料,发送邮件给 connect@qq
网站icp备案信息截图即可用工信部备案信息查询页面的截图
3.2 耐心等待回信(这个要看运气了,快的话当天就能收到回复,否则可能需要7天)
3.3 收到回信,为打通app和网站的qq登录修改代码
网站和app的app id和app key并未改变,通过两套获取到的openid也是不同的,只是通过获取openid时多加一个 unionid=1 的参数,qq将会多返回unionid,打通的网站和app的unionid是一致的(像微信那样了),需要根据unionid是否一致来判断网站来的用户是否和app来的用户为同一个qq账户
如果是使用官方的php的sdk包的,可以参照如下操作
在callback时候,原来会$qc->get_openid(); 获取openid,这时候改成同时获取openid和unionid
3.3.1 在/api/class/oauth.class.php中找到public function get_openid()
//-------请求参数列表
$keysarr = array(
"access_token" => $this->recorder->read("access_token"),
"unionid" => 1
);
请求参数列表增加第二行
//------记录openid
$this->recorder->write("openid", $user->openid);
$this->recorder->write("unionid", $user->unionid);
多增加一条记录
return array(
'openid' => $user->openid,
'unionid' => $user->unionid
);
// return $user->openid;
返回从仅返回openid,改为同时返回openid和unionid
3.3.2 callback文件中,同时接收openid和unionid
$open_id_result = $qc->get_openid();
$open_id = $open_id_result['openid'];
$union_id = $open_id_result['unionid'];
这样就完成了web端的打通的工作(当然app或者服务端也需要做unionid的相应改动)
补充:
关于app如何打通的问题,这里做个介绍,qq官方的app的sdk是只能获取到access_token和openid的,而不能获取到unionid
所以app在获取了access_token之后,需要再发送一个请求到以下地址就可获取到unionid(绑定了的app和web,app的access_token和web的access_token都可以获取到相同的unionid,楼主亲测有效有效哦)
https://graph.qq/oauth2.0/me?access_token=accesstoken&unionid=1j9九游会老哥俱乐部交流区的版权声明:本文标题:【第三方登录】第三方登录 part1 —— qq登录(2016-09最新版) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727387480a1112423.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论