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. 算法基础(一):串匹配问题(BF,KMP算法)

    好家伙,学算法, 这篇看完,如果没有学会KMP算法,麻烦给我点踩 希望你能拿起纸和笔,一边阅读一边思考,看完这篇文章大概需要(20分钟的时间)   我们学这个算法是为了解决串匹配的问题 那什么是串匹配 ...

  2. c++函数重载 c/c++混合编程

    C++语言支持函数重载实现原理: 名字改编(name mangling)具体步骤: 当函数名称相同时,会根据函数参数的类型.个数.顺序进行改编 对源码直接用C++编译器进行编译时,会按C++方式进行调 ...

  3. vivo 帐号服务稳定性建设之路-平台产品系列06

    作者:vivo 互联网平台产品研发团队- Shi Jianhua.Sun Song 帐号是一个核心的基础服务,对于基础服务而言稳定性就是生命线.在这篇文章中,将与大家分享我们在帐号稳定性建设方面的经验 ...

  4. 如何从AWS中学习如何使用AmazonVPC

    目录 如何从 AWS 中学习如何使用 Amazon VPC? 随着 AWS 的迅速发展,Amazon VPC(Virtual Private Cloud)已经成为了一种非常重要的云计算基础设施.VPC ...

  5. 自然语言处理 Paddle NLP - 结构化数据问答-理论

    NLP问答任务 相似度和规则匹配,都是早期的方法,现在主流的方法,都是基于生成的方法 结构化数据问答,有两种形式,一种是知识图谱形式.一种是关系型数据库形式. 主要应用在企业中,减少销售的成本 应用于 ...

  6. 前端:Uncaught TypeError: Cannot set property 'value' of null;

    1.在写JS代码中的绑定事件时(将JS与HTML标签分开时),发现会有如下错误提示: Uncaught TypeError: Cannot set property 'onclick' of null ...

  7. 探秘高逼格艺术二维码的制作过程-AI绘画文生图

    前几天看到几个逼格比较高的二维码,然后自己动手做了一下,给大家看看效果: 1.文生图(狮子): 2.文生图(城市): 下边将开始介绍怎么做的,有兴趣的可以继续读一读. 这里使用的AI绘图工具是Stab ...

  8. XTTS系列之五:警惕大文件表空间

    在上篇<XTTS系列之四:迷迷糊糊的并行度>验证之后,就让测试组在RMAN配置中设置好正确的并行.然后重新将备份任务执行,平均速度直接由之前的150MB/s提升为1200MB/s.优化效果 ...

  9. 每日一题 力扣 445 https://leetcode.cn/problems/add-two-numbers-ii/

    可以直接用栈去做就行,逆序想到栈的做法 然后算完一个就直接赋值给答案数组  我用的是常见 public ListNode addTwoNumbers(ListNode l1, ListNode l2) ...

  10. (内附示例源码)如何通过electron构建桌面跨平台音视频应用

    近年来,视频直播.直播带货.在线教育.在线医疗等音视频领域的相关行业都非常热门,成为大众瞩目的焦点. 在不久的将来,音视频技术渗透于各行各业,无处不在.从IoT网络到个人用户的移动设备,音视频技术以不 ...