【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)
由于楼主是web开发方向,所以这里就介绍一下web接入qq登录的方法,以及和app的qq登录打通的方法
0、前提
已经有一个在工信部备案过的域名的网站,具体可以查询工信部的备案页面(请注意这里的信息很重要,会影响之后qq登录申请时的资料填写)
工信部查询域名备案的网址:http://www.miitbeian.gov.cn/publish/query/indexFirst.action
1、去QQ互联申请应用(腾讯有很多个平台,网页的QQ登录一定是在QQ互联申请,App的是在腾讯开放平台)
QQ互联的网址:https://connect.qq.com/
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.com 和一个正式环境 http://www.example.com
那么网站回调域可以填写为 http://www.example.com/qq_oauth/callback.php;http://dev.example.com/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.com
网站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.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1
【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)相关推荐
- java加按钮_如何从零开始对接第三方登录(Java版):QQ登录和微博登录
阅读本文约需要8分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了HashMap和TreeMap的知识,今天跟大家分享下对 ...
- 如何从零开始对接第三方登录(Java版):QQ登录和微博登录
前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...
- pyqt5登录界面设计——模仿qq登录界面,可登录注册(数据库)
pyqt5登录界面设计--模仿qq登录界面 一.简单易用的可直接登录的界面--账号密码程序写死 1.1.效果图: 1.2.视频效果图 3.代码说明 4.使用示例 5.全部源码见: 二.带数据库的可登录 ...
- Laravel第三方登录开发之实现QQ登录
在我们的项目开发中,第三方登录可以很好的为用户提供便捷,比如微信.QQ.微博登录等等. Laravel,作为一个优雅的PHP框架,已经集成了诸多第三方登录插件. 本文,将详细论述如何在Laravel框 ...
- java中如何实现qq登录与微博登录,如何从零开始对接第三方登录(Java版):QQ登录和微博登录(2)...
到了这一步基本上涉及第三方的就结束了,是不是很简单?后面无非就是如何插入.如何存放token.写入session等. 有几点注意事项: 相关文档官网已经写得非常细了,但是相当乱: 这个我就不详细讲了, ...
- pc版qq登录及移动版qq登录的申请过程
1.在哪里接入? 网站接入QQ登录在QQ互联(https://connect.qq.com)上创建:移动应用也可以在QQ互联(https://connect.qq.com)上创建,但是不推荐如此,可以 ...
- php新浪微博 登录接口文档,qq登录,新浪微博登录接口申请过程中遇到的问题
接口申请下来了,开发很容易的,参数传到就可以了.以前就做过这方面的开发,但是申请还是第一次,网上有关这方面的东东不是很多,所以记录一下申请过程. 1,qq登录接口申请 申请地址是:http://con ...
- php模拟qq登录登录代码,PHP模拟QQ登录
原理是用curl模拟发送post登录,cookie保存本地 这里代码理论可以支持永久单挂QQ <?php //http://blog.qita.in 非技术[S.T] $qqno='你的QQ'; ...
- 用其他账号登录插件 php,HYBBS QQ登录插件使用详解
首先通过HYBBS管理员后台-插件-线上: 找到QQ登录 进行下载 下载成功回到我的插件列表 第一步启用插件 第二部点击安装 随后确定执行安装插件 安装成功 来到插件页面 点击配置 此时 我们需要提 ...
最新文章
- Android studio Day01-23
- ggbiplot设置分组_R语言安装ggbiplot
- IntelliJ IDEA母公司JetBrains遭美国调查,其是美国被大规模黑客攻击的源头?
- scikit-learn学习之贝叶斯分类算法
- Android Glide数据更新及内存缓存、硬盘缓存清理
- Qt5类之QLine and QLineF
- 软考中高项学员:2016年4月13日作业
- 金晨想在无人车上劈叉,撒贝宁与数字祝融号对话…这届百度世界大会,有被惊艳到...
- TODS:从时间序列数据中检测不同类型的异常值
- 前端轻量级的toolTip插件-Tippy.js
- onenote 导出为 html,Exporting or convert OneNote 2010 to HTML, not MHTML
- bugku——宽带信息泄露(RouterPassView 查看路由器配置信息)
- 使用7号电池的科学计算机,新奇:可以用USB充电的5号、7号电池
- 弘辽科技:拼多多这样提升销量才能加权
- 数字水印进阶篇——基于DWT-SVD的数字水印(附matlab代码)
- 连续10年霸榜第一?程序员「最常用」的编程语言是它?
- 有利可图的NFT,NA公链(Nirvana Chain)NAC公链怎么面对高额Gas费的?
- Canvas画钟 js
- 【C语言程序设计】实验 8
- 1.2 行列式的性质和计算