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

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

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP