Springboot 实现QQ登录(界面跳转)
Springboot 实现QQ登录(界面跳转)
现在第三方登录已经变成主流app的登录方式了
今天记录一下如何给自己的网站实现第三方登录(这里以QQ登录为例)
准备工作
首先确保你准备好你自己网站的域名: 如https://xxx.com
以及有正常账号密码登录的方式
有很多实现的方式,比如去微信开放平台和 QQ 开放平台
QQ开发平台:https://connect.qq.com/
微信开放平台: https://open.weixin.qq.com/
上面有教程绑定自己的域名
本文尝试最快实现方法
这里我们使用水滴聚合登录免签API
官网:https://uniqueker.top/

官网创建

注册好账号之后

点击右上角用户 用户中心
进来之后点击 用户列表

点击创建应用

填好一下信息:
- 应用名称(随意)
- 应用首页网站(准备好的域名网址)
- 回调域名白名单 (完成登录之后返回的网址url)
确认提交

创建成功啦!
然后点击应用详情

它会给你几个值,分别是
- APPID
- APPKEY
用于接口参数的配置
springboot 配置
打开后端springboot项目的application.yml完成一下配置
# 第三方登录配置 申请地址 https://uniqueker.top/
third:
config:
appId: xxxx
appKey: xxxx
redirectUrl: xxxx
这里的appId 和 appKey 就是它提供给你的两个参数
redirectUrl 指完成登录之后的返回页面url
这里创建一个配置类,把这些配置属性注入到容器中
@Configuration
@ConfigurationProperties(prefix = "third.config")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ThirdPartyLoginConfig {
private Integer appId;
private String appKey;
private String redirectUrl;
@Bean
public ThirdPartyLoginConfig getConfig() {
return new ThirdPartyLoginConfig(appId, appKey, redirectUrl);
}
}
配置完成
查看水滴给我们提供的qq登录接口
调用登录接口
1.跳转登录地址接口
请求URL:https://uniqueker.top/connect.php?act=login&appid={你的appid}&appkey={你的appkey}&type={登录方式}&redirect_uri={返回地址}
其中登录方式type值对应

返回格式:
{
“code”: 0,
“msg”: “succ”,
“type”: “qq”,
“url”: “https:// graph.qq.com/oauth2.0/XXXXXXXXXX”
}

2.编写测试Controller
写一个简单的测试类
(以下代码无法直接调用,用到了好多工具类!!!)
@Resource
private ThirdPartyLoginConfig thirdPartyLoginConfig;
@GetMapping("/qqLogin")
public String qqLogin() throws IOException {
String requestUrl = String.format("https://uniqueker.top/connect.php?act=login&appid=%s&appkey=%s&type=qq&redirect_uri=%s",
thirdPartyLoginConfig.getAppId(), thirdPartyLoginConfig.getAppKey(), thirdPartyLoginConfig.getRedirectUrl());
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
try {
client = HttpClients.createDefault();
HttpGet request = new HttpGet(requestUrl);
response = client.execute(request);
String responseBody = EntityUtils.toString(response.getEntity());
QQLoginVo qq = new Gson().fromJson(responseBody, QQLoginVo.class);
return qq.getUrl();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
assert response != null;
response.close();
}
}
这里QQLoginVo需要自己封装一下信息
@Data
public class QQLoginVo {
private Integer code;
private String msg;
private String type;
private String url;
}
相当于我们主动访问这个url 同时加上自己的请求参数
登录地址为返回的url的值。
3.登录成功
会自动跳转到指定的redirect_uri,并跟上Authorization Code
例如回调地址是:www.qq.com/my.php,则会跳转到:
http:// www.qq.com/my.php?type=qq&code=520DD95263C1CFEA0870FBB66E
4.获取用户信息
通过Authorization Code获取用户信息
请求URL: https:// uniqueker.top/connect.php?act=callback&appid={appid}&appkey={appkey}&type={登录方式}&code={code}
返回格式:
{
“code”: 0,
“msg”: “succ”,
“type”: “qq”,
“access_token”: “89DC9691E274D6B596FFCB8D43368234”,
“social_uid”: “AD3F5033279C8187CBCBB29235D5F827”,
“faceimg”: “https:// thirdqq.qlogo.cn/g?b=oidb&k=3WrWp3peBxlW4MFxDgDJEQ&s=100&t=1596856919”,
“nickname”: “大白”,
“location”: “XXXXX市”,
“gender”: “男”,
“ip”: “1.12.3.40”
}

跳转成功界面如下:

Springboot 实现QQ登录(界面跳转)的更多相关文章
- 界面编程模仿篇(QQ登录界面逼真篇)
写了好多天的爬虫,偷空前前后后用了两天的时间(排除吃饭睡觉)写完了这个QQ登录界面,看起来还凑和着吧,如果是的大神的,莫见笑,纯属业余作品,废话先不多说,截图如下,其中第二幅图片中的红色方框部份有待完 ...
- Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy
原文:Android菜鸟的成长笔记(3)--给QQ登录界面说So Easy 上一篇:Android菜鸟的成长笔记(2)--第一个Android应用 我们前面已经做了第一个Android应用程序,虽然有 ...
- QQ登录界面布局
简单的qq登录界面布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln ...
- [转]Android:布局实例之模仿QQ登录界面
Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...
- 零基础~仿qq登录界面
html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- WPF开发实例——仿QQ登录界面
原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...
- JavaSwing仿QQ登录界面,注释完善,适合新手学习
使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...
- swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...
- 编写Java程序,使用Swing布局管理器和常用控件,实现仿QQ登录界面
返回本章节 返回作业目录 需求说明: 使用Swing布局管理器和常用控件,实现仿QQ登录界面 实现思路: 创建登录界面的类QQLogin,该类继承父类JFrame,在该类中创建无参数的构造方法,在构造 ...
- Android之QQ登录界面
首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得 ...
随机推荐
- ORM总览
ORM(Object-Relational Mapping)是一种常见的数据访问技术,它将对象模型和关系模型之间进行映射.ORM的主要作用是简化数据访问和管理,提高开发效率和代码质量.在实际应用中,O ...
- 痞子衡嵌入式:主流QuadSPI NOR Flash厂商关于QE位与IO功能复用关联设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是几家主流QuadSPI NOR Flash厂商关于QE位与IO功能复用关联设计. 痞子衡之前写过一篇文章 <串行NOR Flash下 ...
- 第一章 : Linux入门
1. 概述 2. Linux 和 Windows 区别 3. Centos 下载地址 网易镜像:http://mirrors.163.com/centos/7/isos ...
- 1. CS和BS的优缺点
1. CS CS : 客户端服务器架构模式 优点 : 充分利用客户端机械的资源 , 减轻服务器的符合 缺点 : 需要安装 : 升级维护成本较高 2. BS 优点 : 客户端不需要安装 : 维护 ...
- JavaCV人脸识别三部曲之三:识别和预览
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <JavaCV人脸识别三部曲>链接 < ...
- Collection 接口及其常用方法
Collection 接口的特点 Collection接口没有直接实现类,提供了更具体的子接口(如Set和List)的实现.Collection实现类(通常通过其中一个子接口间接实现Collectio ...
- 每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/
每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/ 先对这道题目进行排序,贪心一下,要求分数最高的放在前面,而标 ...
- Dubbo 我手写几行代码,就把通信模式给你解释清楚!
作者:小傅哥 博客:https://bugstack.cn 原文:https://bugstack.cn/md/road-map/road-map.html 沉淀.分享.成长,让自己和他人都能有所收获 ...
- 一个高性能、低内存文件上传流.Net组件
推荐一个用于轻松实现文件上传功能的组件. 项目简介 一个基于 .NET 平台的开源项目,提供了一个简单易用的 API,可以在 Web 应用程序中快速集成文件上传功能. 优化多部分流式文件上传性能:减少 ...
- 音视频开发进阶——YUV与RGB的采样与存储格式
在上一篇文章中,我们带大家了解了视频.图像.像素和色彩之间的关系,还初步认识了两种常用的色彩空间,分别是大家比较熟悉的 RGB,以及更受视频领域青睐的 YUV.今天,我们将继续深入学习 RGB.YUV ...