【安利】给大家推荐一款超好用的第三方登录的开源插件

2024-06-01 05:38

本文主要是介绍【安利】给大家推荐一款超好用的第三方登录的开源插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[外链图片转存失败(img-1HBx07HI-1563201751232)(https://oscimg.oschina.net/oscnet/5663987fdc58f9167c9fbedd1ad28f53891.jpg “JustAuth”)]

给大家安利一款开源的工具库JustAuth,这或许也是史上最全的整合第三方登录的工具,目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软和今日头条等第三方平台的授权登录。

Login, so easy!

特点

废话不多说,就俩字:

  1. :已集成十多家第三方平台(国内外常用的基本都已包含),后续依然还有扩展计划!
  2. :API就是奔着最简单去设计的(见后面快速开始),尽量让您用起来没有障碍感!

为什么要开发这个东西?

现在的网站、个人博客数量越来越多,而登录又是博客网站的一大功能。但如果去开发一个完整的登录功能,却又不是那么容易,需要考虑时间和人力成本,同时还要考虑功能的复杂性,避免用户因为登录/注册流程的复杂性而选择离开。这个复杂性就涉及到具体的验证方式(短信验证、邮箱验证或者人机验证),每一种验证方式都会或多或少的增加用户的操作成本。而“第三方登录”则可以避开以上问题,因为第三方登录的方便性和快捷性,能够降低用户的注册、登录成本,方便快速实现登录或者注册,从而减少由于本地登录的繁琐性而造成的隐形用户流失,提供用户的转化率。同时还能减轻己方系统的复杂性,不用单独去设计、维护一套用户系统。

综上所述,简单归纳后就是:

  1. 方便用户快捷登录,减少用户的操作复杂性,降低用户的登录流失率
  2. 保护用户的隐私(第三方登录授权的用户信息只是基本的用户信息,不涉及私密信息)
  3. 减少系统的维护成本

有什么用处?

让登录变得更简单!可以快速的实现诸如Github、Gitee、OSChina和Google等国内外第三方平台的授权登录。

怎么用?

简单!统共分三步:

第一步,把冰箱门打开…

咳咳,窜台了…

该工具使用起来十分简单,统共分三步…

  1. 申请注册第三方平台的开发者账号
  2. 创建第三方平台的应用,获取配置信息(id, secret, callbackUrl)
  3. 使用该工具实现授权登陆

本文以Gitee网站为例,讲解简单的操作流程:

  1. 注册Gitee账号:https://gitee.com。如果已有则忽略该步骤,直接进入第二步。
  2. 创建第三方应用

进入第三方应用页面(https://gitee.com/oauth/applications)

创建应用

应用名称 一般填写自己的网站名称即可
应用描述 一般填写自己的应用描述即可
应用主页 填写自己的网站首页地址
应用回调地址 重点,该地址为用户授权后需要跳转到的自己网站的地址,默认携带一个code参数
权限 根据页面提示操作,默认勾选第一个就行。

以上信息输入完成后,点击确定按钮创建应用。创建完成后,点击进入应用详情页,可以看到应用的密钥等信息

copy以下三个信息:Client IDClient Secret应用回调地址

  1. 使用JustAuth实现授权登陆

创建授权request

AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder().clientId("Client ID").clientSecret("Client Secret").redirectUri("应用回调地址").build());

生成授权地址

authRequest.authorize()

生成授权地址后,可以直接redirect到授权页面。

授权完成后,进行登录

// code为用户授权后回调回本地系统时携带的参数,不可重复利用
AuthResponse response = authRequest.login(code);

response数据结构如下:

{"code": 0,"msg": null,"data": {"username": "yadong.zhang","avatar": "https://avatar.gitee.com/uploads/99/784199_yadong.zhang.png?1462325358","blog": "https://www.zhyd.me","nickname": "yadong.zhang","company": null,"location": "{\"address\":\"北京市朝阳区管委会\",\"province\":\"北京市\",\"city\":\"朝阳区\",\"name\":\"\",\"tel\":\"\",\"comment\":\"\",\"zip_code\":\"\"}","email": "yadong.zhang0415@gmail.com","remark": "一个北漂的程序员。","gender": null,"source": "GITEE","accessToken": "277c24a57539e3f0643eb9cf8855ca4c"}
}

到此为止,一个登录功能就算完成了!是不是 So easy?

最后,附上上面小例子的整合版代码:

import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.request.AuthGiteeRequest;
import me.zhyd.oauth.request.AuthRequest;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@RestController
@RequestMapping("/oauth")
public class RestAuthController {@RequestMapping("/render")public void renderAuth(HttpServletResponse response) throws IOException {AuthRequest authRequest = getAuthRequest();response.sendRedirect(authRequest.authorize());}@RequestMapping("/callback")public Object login(String code) {AuthRequest authRequest = getAuthRequest();return authRequest.login(code);}@RequestMapping("/revoke/{token}")public Object revokeAuth(@PathVariable("token") String token) throws IOException {AuthRequest authRequest = getAuthRequest();return authRequest.revoke(token);}private AuthRequest getAuthRequest() {return new AuthGiteeRequest(AuthConfig.builder().clientId("Client ID").clientSecret("Client Secret").redirectUri("应用回调地址").build());}
}

代码中包含revoke操作(取消授权),但是并不是每个平台都支持revoke操作,所以本文对该功能不做过多介绍。

更多api,请参考原项目文档,项目地址

  • github: https://github.com/zhangyd-c/JustAuth
  • gitee: https://gitee.com/yadong.zhang/JustAuth

项目demo

JustAuth-demo,该项目为JustAuth同步的demo项目,使用该项目方式参考本文提到的三个步骤:

  1. 申请注册第三方平台的开发者账号
  2. 创建第三方平台的应用,获取配置信息(id, secret, callbackUrl)
  3. 使用该工具实现授权登陆

这篇关于【安利】给大家推荐一款超好用的第三方登录的开源插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020133

相关文章

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Java日期类详解(最新推荐)

《Java日期类详解(最新推荐)》早期版本主要使用java.util.Date、java.util.Calendar等类,Java8及以后引入了新的日期和时间API(JSR310),包含在ja... 目录旧的日期时间API新的日期时间 API(Java 8+)获取时间戳时间计算与其他日期时间类型的转换Dur