说明

本文中所说的QQ登录功能,是采用官方的OAuth2.0来实现的,这样有更多的自主权。另一种较为简单的JS-SDK开发方式,虽然非常简便,但自主性不够,所以没有采用。下文中所构造的URL,均使用了JAVAScript的ES6语法。

注册开发者

先登录QQ互联官网,登录时所用的QQ号会和相关信息绑定,这一点要注意。

登录之后点击顶部导航栏右侧自己的QQ头像,进入开发者的注册/认证界面。

这里可以选择以“公司”或“个人”的身份注册为开发者。自己最开始用的是公司的相关资料来注册的,但总是提示审核失败,却又不说为什么失败,最后干脆用个人信息注册,很快就成功了。

PS:不知道用个人信息注册为开发者的话,权限方面会不会有什么限制。微信公众平台对个人开发者是有限制的,个人身份注册的公众号无法认证,公众平台的部分权限也无法调用。

创建网站应用

要想让网站能够使用QQ登录功能,就必须先在QQ互联中创建

网站应用

QQ互联

网站顶部导航栏上,点击

应用管理

。点击页面中的

网站应用

这个标签,再点击

创建应用

,按照要求填写相关的信息即可。

注意这里需要填写两个 URL,一个是

网站地址

,也就是需要让用户能够通过QQ登录的网站。另一个是

网站回调域

,则是用户发起QQ登录请求之后,负责与腾讯服务器通讯,实现QQ登录功能的URL,这两个URL要注意区分。

所创建的网站应用审核通过之后,点击

查看

按钮,在网站应用的详情界面,能看到为这个网站分配的

App ID

APP Key

,后面实现QQ登录功能的时候要用到。

另外,还能看到审核通过的网站应用,有两个可用的应用接口,第一个

登录

默认是开启的,第二个

unionid

需要手动开启,这里先把它开启了,后面说不定就用上了。

流程概述

接下来就需要编写代码,实现QQ登录功能了。这里先简要说明一下整体流程:

按照要求访问指定网址,会显示QQ登录界面,选择QQ账号进行登录之后,会向之前所填写的

网站回调域

发起回调,回调URL中包含

Authorization Code(授权码)

网站回调域

用这个

Authorization Code(授权码)

,结合其它数据,向指定的地址发送请求,接收到的响应中包含

Access Token(访问令牌)

网站回调域

再用

Access Token(访问令牌)

向指定的地址发送请求,接收到的响应中包含所登录QQ账号的

OpenID

(不涉及用户隐私)。

网站回调域

拿到用户的

OpenID

之后,结合前面获取到的

Access Token

以及其它数据,就可以调用QQ的接口,实现特定的功能了。比如可以调用

get_user_info

接口,获取登录用户的昵称、头像、性别,用来显示在前端页面中。

一、获取Authorization Code

在自己编写的登录页面,点击QQ图标之后,请求下面的地址:

//www.lu-xu.com/d/uploads/2020-11/06/ijbcf2qhkma.jpg ID,redirectUrl为网站应用的网站回调域,state为用户自定义的字符串,scope为向用户所请求的授权列表。

scope之外的参数均为必填项,scope如果不写,则默认只请求对接口get_user_info进行授权,获取用户最基本的几项信息:QQ昵称、QQ头像、性别。

发起请求之后,会将用户导向到QQ官方的登录页面,用户在这个页面上选择需要登录的QQ号,点击“登录”,

网站回调域

就会收到的腾讯服务器所发起的回调。

比如之前所填写的

网站回调域

为 a.com/api/getauthcode 的话,腾讯服务器就会向

网站回调域

发送如下请求:

GET /getauthcode?code=F91C6110********

在上面接收到的这个请求中,URL查询字符串里,code= 后面的字符串,就是腾讯服务器发来的Authorization Code。

二、获取Access Token

拿到Authorization Code,结合其它数据,请求如下地址:

//www.lu-xu.com/d/uploads/2020-11/06/pkejagy4s2b.jpg Token,并且这个Access Token有90天的有效期,但并不会按照官方文档所说的,

用户再次登录时自动刷新

,而是短时间(一天内)连续多次登录都不会刷新。

对于这个Access Token,官网建议开发者将其进行保存,以便后续调用OpenAPI访问和修改用户信息时使用。

三、获取OpenID

有了Access Token之后,就可以用它来获取当前所登录QQ账号的OpenID了。请求如下地址:

//www.lu-xu.com/d/uploads/2020-11/06/s2tlhmkcfox.jpg {"client_id":"appId","openid":"openId"} );

上面的响应中包含了 APP ID 和 OpenID,APP ID 可用来确认是否为合法的网站请求,OpenID 自然就是所登录QQ账号的 OpenID 了。

四、调用接口访问数据

有了第二步获取到的获取Access Token,和第三部获取到的 OpenID,就可以拿来访问QQ的接口,获取用户的相关信息了。

比如以下面的方式请求 get_user_info 接口,就能够获取到用户昵称、QQ头像等信息。

//www.lu-xu.com/d/uploads/2020-11/06/hjqtp4n3ak3.jpg | OAuth2.0开发指引get_user_info | API列表

1.《qq互联官网登录首页 网站接入QQ登录功能》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《qq互联官网登录首页 网站接入QQ登录功能》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/346249.html