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登录(界面跳转)的更多相关文章

  1. 界面编程模仿篇(QQ登录界面逼真篇)

    写了好多天的爬虫,偷空前前后后用了两天的时间(排除吃饭睡觉)写完了这个QQ登录界面,看起来还凑和着吧,如果是的大神的,莫见笑,纯属业余作品,废话先不多说,截图如下,其中第二幅图片中的红色方框部份有待完 ...

  2. Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy

    原文:Android菜鸟的成长笔记(3)--给QQ登录界面说So Easy 上一篇:Android菜鸟的成长笔记(2)--第一个Android应用 我们前面已经做了第一个Android应用程序,虽然有 ...

  3. QQ登录界面布局

    简单的qq登录界面布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln ...

  4. [转]Android:布局实例之模仿QQ登录界面

    Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...

  5. 零基础~仿qq登录界面

    html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  6. WPF开发实例——仿QQ登录界面

    原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...

  7. JavaSwing仿QQ登录界面,注释完善,适合新手学习

    使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...

  8. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  9. 编写Java程序,使用Swing布局管理器和常用控件,实现仿QQ登录界面

    返回本章节 返回作业目录 需求说明: 使用Swing布局管理器和常用控件,实现仿QQ登录界面 实现思路: 创建登录界面的类QQLogin,该类继承父类JFrame,在该类中创建无参数的构造方法,在构造 ...

  10. Android之QQ登录界面

    首先过程中碰到的几个问题: 1.对 EditText 进行自定义背景 2.运行时自动 EditText 自动获得焦点 3.在获得焦点时即清空 hint ,而不是输入后清空 4.清空按钮的出现时机(在得 ...

随机推荐

  1. 深入解析React DnD拖拽原理,轻松掌握拖放技巧!

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值.. 本文作者:霁明 一.背景 1.业务背景 业务中会有一些需要实现拖拽 ...

  2. 第三届陕西省大学生网络安全技能部分WP

    web easyrce 题目代码如下: <?php error_reporting(0); highlight_file(__FILE__); if (!empty($_GET['PK'])){ ...

  3. 花了半天时间,使用spring-boot实现动态数据源,切换自如

      在一个项目中使用多个数据源的情况很多,所以动态切换数据源是项目中标配的功能,当然网上有相关的依赖可以使用,比如动态数据源,其依赖为, <dependency> <groupId& ...

  4. .Net7基础类型的优化和循环克隆优化

    前言 .Net7里面对于基础类型的优化,是必不可少的.因为这些基础类型基本上都会经常用到,本篇除了基础类型的优化介绍之外,还有一个循环克隆的优化特性,也一并看下. 概括 1.基础类型优化 基础类型的优 ...

  5. ProtocolBuffers的国际化和本地化支持

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 34.< Protocol Buffers 的国际化和本地化支持> 本文将介绍 ...

  6. 性能_3 jmeter连接数据库jdbc(sql server举例)

    一.下载第三方工具包驱动数据库 1. 因为JMeter本身没有提供链接数据库的功能,所以我们需要借助第三方的工具包来实现.  (有这个jar包之后,jmeter可以发起jdbc请求,没有这个jar包, ...

  7. 微调用于多语言 ASR 的 MMS 适配器模型

    新内容 (06/2023): 这篇博文受到 "在多语言 ASR 上微调 XLS-R" 的强烈启发,可以看作是它的改进版本. Wav2Vec2 是自动语音识别 (ASR) 的预训练模 ...

  8. IOS开发-UIImageView基本用法

    UIImageView是iOS中用于显示图像(图片.gif.svg等)的视图. 它的主要功能有: 1. 显示图片UIImageView可以通过image属性显示一张UIImage类型的图片.可以是本地 ...

  9. SQL Sever 基础语法(增)

    SQL Sever  插入(Insert)基础语法详解 在SQL中,向表中插入数据是最基础的,任何对数据处理的基础就是数据库有数据,对于SQL而言,向表中插入数据有多种方法,本文列举3种: (一) 标 ...

  10. BLOB-CLOB 处理成String (*)

    实体类中的写法: --实体类对应的类型为byte[] (clob为char[]). /* byte[] blob = commonService.getPersonImage(bean.getIdCa ...