举杯邀月

第三方授权登录 - QQ 授权

摘要:第三方登入太常见了,他们让我们登陆更加方便,直接授权就可以进入,现在各大平台也都基本支持第三方登陆,如微信,微博,QQ...总有一个你用过。

QQ授权登录时,直接拉取用户在QQ空间的昵称、头像、性别等信息,降低用户的注册成本。

这里我们说的是 QQ 第三方授权的网页登陆。

首先需要注册 QQ 互联并添加 ‘网站应用’
QQ 互联注册网址:https://connect.qq.com/

举杯邀月-技术博客
选择网站应用,信息按照提示进行填写即可。

值得注意的是:在填写资料的时候,网站名称要填写备案时写的网站名称,否则会审核失败,并且这个名称会在用户的登陆的时候进行提示的名称。

创建完应用后会有一个 APP ID 和 APP Key。

总体流程

1.获取 code

第三方客户端引导用户发送get请求

https://graph.qq.com/oauth2.0/authorize
1

参数:

参数名 是否必须 含义
response_type 必须 授权类型,此值固定为“code”。
client_id 必须 申请QQ登录成功后,分配给应用的appid。
redirect_uri 必须 成功授权后的回调地址,注意需要将url进行URLEncode。
state 必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回
scope 可选 请求用户授权时向用户显示的可进行授权的列表。
display 可选 仅PC网站接入时使用。用于展示的样式。不传则默认展示为PC下的样式。如果传入“mobile”,则展示为mobile端下的样式。

这时会跳转到 QQ 登入授权页面,授权后 QQ 会向客户端返回到我们的创建应用的时候填写的那个回调地址。并且带着code参数

注意:此code会在10分钟内过期。

2.通过 code 获取 access_token

有了code,我们在通过 APP IDAPP Keycode这三个参数去发送get请求,获取 access_token

https://graph.qq.com/oauth2.0/token
1

参数:

参数名 是否必须 含义
grant_type 必须 授权类型,在本步骤中,此值为“authorization_code”。
client_id 必须 申请QQ登录成功后,分配给网站的appid。
client_secret 必须 申请QQ登录成功后,分配给网站的appkey。
code 必须 上一步返回的authorization code。

redirect_uri | 必须 | 与上面一步中传入的redirect_uri保持一致。

另外,获取到的 access_token 会有过期时间,不过可以进行权限自动续期,请参考官方api,这里不多做介绍

3.用 access_token 获取 openid

get请求地址:

https://graph.qq.com/oauth2.0/me?access_token=[access_token]
1

另外,追加 unionid=1 参数可获取 unionid,当然这是可选的。

4.最后,获取用户信息

get请求地址:

https://graph.qq.com/user/get_user_info?access_token=[access_token]&oauth_consumer_key=[APP ID]&openid=[openid]
1

到这里,关于 QQ 授权获取用户数据就完成了。

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fd9b6f85af5b.html

2020-10-09 标签: 三方授权登录