SpringBoot For Java SDK 和 JS sdk 两种方式实现QQ第三方登录[精选]

本文介绍了如何使用Java SDK和JS SDK实现QQ第三方登录。讲解了oAuth2协议的基础知识,详细阐述了QQ登录的流程,包括获取code、access_token和openid。并提供了Java SDK的配置与使用方法,以及JS SDK的实现步骤,帮助开发者理解并实现在项目中集成QQ登录功能。
摘要由CSDN通过智能技术生成

博主个人主页

前言

这一篇我们主要来说一下如何使用JavaSdk 和 Js Sdk 来实现我们的第三方登录

本地测试记得修改本地的hosts文件哦 修改127.0.01 映射为 您的域名地址即可 因为http请求会先解析本地的 DNS 在去互联网上解析 所以想在本地测试就需要修改hosts文件

位置在 C:/Windows/System 32/drivers/etc/hosts

域名设置在下面教程

开始

首先我们要借助于开放平台提供的力量来进行开发 那么我们是否是有必要去了解一下开放平台所尊徐的协议呢 没错 互联网中这么多的开放平台都是实现了oAuth2规范协议

那么这个oAuth是什么呢?

首先我们需要知道 oAuth 是一种标准 对应的实现有Spring Security oAuth2 框架 或者说 Shiro 框架对其都有实现

先来看起执行流程

在这里插入图片描述
里面有几种角色 分别是

资源所有者 就是用户
资源服务器 提供资源的服务器 不用太关系 站在用的角度
第三方应用客户端 我们的程序
授权服务器 也可以叫认证服务器 QQ开放平台的认证服务器 我们不用太关心

配合上图再看一遍

我们今天主要来说一下QQ登录的流程以及实现

其中主要的标识有

code
access_token
openid

再次看一张流程图

借用官方的流程图样例
在这里插入图片描述
我们需要分别拿到code 通过code 得到 access_token 在通过access_token 获取 用户唯一对外开放标识 openid

在此之前 我们需要去开放平台中注册用户 设置我们的应用得到appidappkey

我们一步一步来

跳过申请应用步骤直接看代码

第一步

进入官网

第二步

进行登录

在这里插入图片描述
第三步

在这里插入图片描述
第四步

在这里插入图片描述
第五步

选择您的应用类型 我这里以网站应用为准
在这里插入图片描述
第六步

填写您对应的信息

在这里插入图片描述
第七步

设置您的应用信息
注意

网站地址必须是外网可以访问的 因为回调地址会在qq后台的服务器发送的 所以外网不能访问那是不行的

回调地址你可以写以网站域名/xxx都行

例如 域名是 http://liwenxiang.top 回调地址就可以是 http://liwenxiang.top/qqlogin

在这里插入图片描述
创建成功

点击应用管理
在这里插入图片描述
可以看到你刚刚申请的应用在审核中 等待审核通过即可
在这里插入图片描述
查看appid 和 app key 这个应用我已经删除了哦 不要做坏事哦 嘿嘿

查看接口就选择另一个选项卡即可
在这里插入图片描述
以上准备工作做完之后我们来看 具体的内容

先了解几个标识的意思

code 就是用来获取access_token的 通过请求 https://graph.qq.com/oauth2.0/authorize 获得 请求方式是get方式 code会在10分钟内过期

请求的参数如下 这些都是官网有的 在这里大致说一下

response_type 必须 授权类型,此值固定为“code”。

client_id 必须 申请QQ登录成功后,分配给应用的appid。

redirect_uri 必须 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。

state 必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。

scope 可选 请求用户授权时向用户显示的可进行授权的列表。

可填写的值是API文档中列出的接口,以及一些动作型的授权(目前仅有:do_like),如果要填写多个接口名称,请用逗号隔开。

例如:scope=get_user_info,list_album,upload_pic,do_like
不传则默认请求对接口get_user_info进行授权。建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行任何授权。

display 可选 仅PC网站接入时使用。

用于展示的样式。不传则默认展示为PC下的样式。
如果传入“mobile”,则展示为mobile端下的样式。

获取access_token

获取access_token的话也有对应的地址请求 其实就是去请求qq的认证服务器去了

这个也有过期时间 官网说的是三个月

地址 https://graph.qq.com/oauth2.0/token

想了解的可以去官网详细看参数

在写在之后我们使用JavaSDK的时候 都是已经封装好的 用起来很方便

请求地址成功后 会返回到您的回调地址 并携带这么一串查询字符串

access_token=FE04************************CCE2&expires_in=7776000&refresh_token=88E4************************BE14

获取openid 用户身份标识

请求地址 https://graph.qq.com/oauth2.0/me

具体看官网

然后就是我们需要知道这几个标识分别是什么意思 要谨记哦

开发

链接:https://pan.baidu.com/s/1zv6-4zSGMqCjG44FrK-tjg
提取码:ja3d

请务必下载DEMO哦 里面有JavaSDK jssdk采用CDN的

请必看README.txt !!! 请必看README.txt !!! 请必看README.txt!!!

写代码前说的话

在实际应用中 我们肯定是有对应的数据库的 所以数据库的设计是必不可少的 因为我们的用户在使用QQ登陆之后我们是需要给存储到数据库中的 做一些绑定操作等等 所以说一个合理的数据库设计是很重要的 以下就是简单的数据库结构 但是改DEMO中并没有将用户存储到数据库中 其实我们仅仅讲到获取到openid就OK了 获取到了openid你还不会存储到数据库中吗 这都是比较简单的了对吧 我们要关注核心

字段名 字段含义

id 主键
openType 第三方类型,比如qq、weibo
openId 代表用户唯一身份的ID
expiredTime 授权过期时间,第三方登录授权都是有过期时间的,比如3个月
nickname 昵称
avatar 头像

Java 方式实现 第三方登录

首先我们创建一个SpringBoot项目 目录结构就是改例子DEMO一样 还有文件

我来解释一下里面的内容意思

qqlogin依赖是手动导入进去的 就是说是自己手动打到maven仓库中

对应命令

mvn install:install-file -DgroupId=tx.qqsdk -DartifactId=qqlogin -Dversion=1.1 -Dfile=你的sdk jar路径 -Dpackaging=jar 

pom.xml

里面模板引擎的依赖thymeleaf 是因为我们用到了模板引擎

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>top.liwenxiang.qqlogin</groupId>
    <artifactId>qqlogin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qqlogin</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
        </dependency>

        <dependency>
            <groupId>tx.qqsdk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值