互联网应用接入QQ登录时如何获取codehttps?QQ互联申请攻略

发布时间:   来源:CSDN  

现在互联网应用一般都会接入QQ登录。但是在接入QQ登录的时候就有点犯晕了。因为摆在他们面前的有2个平台。 一个是 腾讯开放平台,一个是 QQ互联。


(资料图)

QQ互联(QQ开放平台)

如果只是单纯的想要QQ授权登录、分享,而不需要进入腾讯应用宝市场的,那选择QQ互联就可以了,毕竟能满足需求。

腾讯开放平台(应用开放平台)

这里有要强调的,不管是在QQ互联 ,还是腾讯开放平台,都要注意以下细节:

同一个 APP 的在不同系统(iOS, Android),在申请的时候,最好以一个应用来申请,这样子最后只会有一个appid。申请成多个应用会导致需要维护多个appid。申请完应用后,各应用间默认是不打通。 如果系统需要各应用间账号打通,需要发一个【应用打通】邮件到到QQ互联平台,地址:http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%8D%E9%A6%88, 【应用打通】表格可以下载,在填齐资料后,附带公司的营业执照副本电子件,发送到 connect@qq.com 邮箱。申请通过后,用户在同一个公司下不同的应用使用QQ登录时,就会有统一的unionid。

如何获取 code

参数介绍:

appid: 应用idredirect_uri: 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,需要将url进行URLEncodestate: 必选,client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。scope: 可选,授权列表,多个用逗号隔开display:可选,移动端展示值可设置为mobile

在填充完对应的参数后,扫描完二维码,会跳转到回调地址并携带上code。地址类似于:https://www.mimeay.cc?code=xxxxx

如何获取 access_token

官方文档其实描述的很详细了:http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token#Step1.EF.BC.9A.E8.8E.B7.E5.8F.96AuthorizationCode

如何获取Unionid

如何获取openid

Https 请求方式: Get https://graph.qq.com/oauth2.0/me?access_token=ACCESSTOKEN&unionid=1

返回的结构如下:

{   "client_id":"YOUR_APPID",   "openid":"YOUR_OPENID",   "unioid":"YOUR_UNIONID" // 请求参数不含 unionid=1 则不会返回此字段 }

这里简单介绍下:

access_token: web端或者移动端授权完后所得

web端授权完后得到code,后端根据 code换取 access_token

移动端可直接得到 access_token

unionid,这个参数可选,如果带着unionid=1 请求QQ授权的API(前提是已经申请应用打通,要不然会报 companyid not set的错误), 会返回 client_id, openid, unionid, 不带unionid=1,则只返回 client_id, openid

如何在后端验证 access_token的合法性

前面提到移动端可以直接得到 access_token,带着 access_token 去请求 QQ互联提供的API, 是可以获取到用户信息的。 请注意,在unionid落库之前,请先校验是否是合法的授权。 在换取 unioid 时,QQ互联的 API 是有返回 client_id的, 其实也就是appid,我们只要校验后台的配置是否存在此 appid, 就能验证 access_token的合法性了

如何获取用户资料

官方文档基本上都有了。包括访问基本信息, 访问用户QQ会员信息API列表

并不是带着access_token就一定能获取到所有信息,这取决于前面 scope 授权的情况, 如 scope授权列表不含 list_album, 则在请求 ttps://graph.qq.com/photo/list_album时就拿不到相册列表。

文档参考

授权文档:http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_server-sideAPI 文档 :http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8

***************************************************************************************************************************************

移动 App 接入 QQ 登录/分享流程

这里先要提两个平台,腾讯开放平台和 QQ 互联平台: (一)腾讯开放平台 官网地址:https://open.tencent.com/ 介绍:腾讯开放平台是腾讯对开发者公开的一个服务平台,腾讯号称是一个覆盖10亿账户的热门服务平台,这里是接入应用宝,微信,QQ,腾讯 AI 等的一个入口

(二)QQ 互联平台 官网地址:https://connect.qq.com/index.html 这是具体的接入 QQ 的平台,比如 QQ 登录,QQ 分享,QQ AR

开发者注册

0.想要接入腾讯的提供的一些服务,需要先注册腾讯开发者 1.登录 QQ 互联平台:https://connect.qq.com/devuser.html#/ 2.点击自己的头像,完善信息,【注意】图片是自己手持身份证的图片 3.提交审核,等待邮箱通知就可以了,一般需要 3 天左右

创建应用

0.等审核通过之后就可以创建应用申请接入了1.进入QQ互联官网,点击【应用管理】,点击【创建应用】

2.选择网页还是移动 app

3.填写信息

4.获取签名,继续继续填写信息如果不记得签名,可以将 app 安装手机或者模拟器,然后安装一个 AppManage.apk 工具AppManage.apk 下载地址:就在 Android 开发信息单选框那行的后面5.完成,等待审核结果

接入 QQ 登录

这里大家就可以根据官方文档,自己根据情况去配置了官方文档:http://wiki.connect.qq.com/qq登录

***********************************************************************************************************************

移动应用接入网页QQ登录

在以前应用接入 Android/IOS SDK 后, 如果用户手机没有安装客户端 , 可以直接使用网页授权登录.但是现在腾讯关闭了网页授权登录,转为提示用户.这样的体验很不好 !

但是发现 QQ 音乐、QQ 视频 在没有安装客户端的情况下,依然可以进行 H5 登录 .(一度怀疑是亲儿子的待遇) 后来发现是网页应用授权登录。

开通网页登录比如要面临一个问题 , 网页授权登录和移动授权登录的 OpenId 不一致,服务端无法判定是否为同一用户.。

腾讯的做法是不同应用登录 OpenId 不一样,但是 UnionId 一样. 之前客户端登录都是使用的 OpenId 。因此服务端需要一个接口 , 跑数据库,在数据中新加一个字段, UnionId ,以后不再使用 OpenId ,而使用 UnionId 作为用户唯一标识.。

整个申请流程花了很长时间 :

在腾讯互联注册网页应用 . 申请 网页应用 AppId 和 AppKey. (移动应用和网页应用必须在同一账号下). 联系 QQ 互联客服 , 询问通过 OppenId 获取用户 UnionId 的接口.(我是直接在QQ上联系客服后,客服给了我一个邮箱,你可以将你面临的问题通过邮件沟通具体流程)。 移动应用使用网页登录简要流程 : (具体携带参数,请参考下方链接)

客服端访问后端提供的一个接口。 后端请求 https://graph.qq.com/oauth2.0/authorize 用户登录成功后, 获取 Authorization Code 。 后端请求 https://graph.qq.com/oauth2.0/token 通过Authorization Code获取Access Token 。 后端请求 https://graph.qq.com/oauth2.0/me 获取用户OpenId, UnionId , 服务器比对 UnionId,判断登录还是注册。 webview 与 js 交互,传递 Access Token 和 OppenId ,正常登陆流程。 QQ互联 参考文档 :

相关文章Related

返回栏目>>