作为一名开发者,很多人都遇到过对接第三方平台的需求。
在与第三方平台认证的时候,需要根据 SDK 实现认证的逻辑。
如果产品对接的平台少还好,如果需要与多个平台认证,那么相似的逻辑就会产生一些重复性的工作。
那么,有没有什么便捷的工具,能快速的解决第三方登录认证的问题呢?
有的,它就是我们今天要介绍的主角---JustAuth。
JustAuth简介
JustAuth,见名知义。
正如它的名字一样,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK.
让登录变得So easy!
目前已支持的平台有:
-
Github
-
Gitee
-
微博
-
钉钉
-
百度
-
Coding
-
腾讯云开发者平台
-
OSChina
-
支付宝
-
QQ
-
微信
-
淘宝
-
Google
-
Facebook
-
抖音
-
领英
-
小米
-
微软
-
今日头条
-
Teambition
-
StackOverflow
-
Pinterest
-
人人
-
华为
-
企业微信
-
酷家乐
-
Gitlab
-
美团
-
饿了么
-
推特
-
飞书
-
京东
-
阿里云
-
喜马拉雅
-
Amazon
特点
-
全:已集成十多家第三方平台(国内外常用的基本都已包含),仍然还在持续扩展中(开发计划)!
-
简:API就是奔着最简单去设计的(见后面快速开始),尽量让您用起来没有障碍感!
极致的简 & 丰富的全
JustAuth力求做到最简单、最易用、最全面。
您无需去第三方平台找寻繁杂而庞大的SDK文档,JustAuth提供了及其简单的接入方式,为您节省大量的开发时间,提高您的工作效率!
同时已支持了国内外数十家OAuth平台。
想做OAuth登录,JustAuth就够了!
功能
-
集成国内外数十家第三方平台,实现快速接入。
-
自定义 State 缓存,支持各种分布式缓存组件。
-
自定义 OAuth 平台,更容易适配自有的 OAuth 服务。
-
自定义 Http 实现,选择权完全交给开发者,不会单独依赖某一具体实现。
快速开始
引入依赖
<dependency>
<groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId>
<version>{latest-version}</version>
</dependency>
latest-version 可选:
稳定版:快照版:注意:快照版本是功能的尝鲜,并不保证稳定性。请勿在生产环境中使用。
如何引入快照版本 如下任选一种 HTTP 工具 依赖,项目内如果已有,请忽略。另外需要特别注意,如果项目中已经引入了低版本的依赖,请先排除低版本依赖后,再引入高版本或者最新版本的依赖
hutool-http
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-http</artifactId> <version>5.7.7</version> </dependency>
httpclient
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
okhttp<dependency>
<groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.1</version> </dependency>
调用api 普通方式
// 创建授权request
AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build());
// 生成授权页面
authRequest.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数
// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
authRequest.login(callback);
Builder 方式一 静态配置 AuthConfig
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("github")
.authConfig(AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build())
.build();
// 生成授权页面
authRequest.authorize("state");
// 授权登录后会返回code(auth_code(仅限支付宝))、state,1.8.0版本后,可以用AuthCallback类作为回调接口的参数
// 注:JustAuth默认保存state的时效为3分钟,3分钟内未使用则会自动清除过期的state
authRequest.login(callback);
Builder 方式二 动态获取并配置 AuthConfig
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("gitee")
.authConfig((source) -> {
// 通过 source 动态获取 AuthConfig
// 此处可以灵活的从 sql 中取配置也可以从配置文件中取配置
return AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build();
})
.build();
Assert.assertTrue(authRequest instanceof AuthGiteeRequest);
System.out.println(authRequest.authorize(AuthStateUtils.createState()));
Builder 方式支持自定义的平台
AuthRequest authRequest = AuthRequestBuilder.builder()
// 关键点:将自定义实现的 AuthSource 配置上
.extendSource(AuthExtendSource.values())
// source 对应 AuthExtendSource 中的枚举 name
.source("other")
// ... 其他内容不变,参考上面的示例
.build();
对于在项目中有需要集成第三方登录的同学可以在官网或 Github 地址了解。
写在最后(私活源码)
项目介绍
Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。
Jeepay使用Spring Boot和Ant Design Vue开发,集成Spring Security实现权限管理功能,是一套非常实用的web开发框架。
项目特点
· 支持多渠道对接,支付网关自动路由
· 已对接微信服务商和普通商户接口,支持V2和V3接口
· 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名
· 已对接云闪付服务商接口,可选择多家支付机构
· 提供http形式接口,提供各语言的sdk实现,方便对接
· 接口请求和响应数据采用签名机制,保证交易安全可靠
· 系统安全,支持分布式部署,高并发
· 管理端包括运营平台和商户系统
· 管理平台操作界面简洁、易用
· 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达
· 支付渠道的接口参数配置界面自动化生成
· 使用spring security实现权限管理
· 前后端分离架构,方便二次开发
· 由原XxPay团队开发,有着多年支付系统开发经验
系统架构
Jeepay计全支付系统架构图
核心技术栈
软件名称 | 描述 | 版本 |
Jdk | Java环境 | 1.8 |
Spring Boot | 开发框架 | 2.4.5 |
Redis | 分布式缓存 | 3.2.8 或 高版本 |
MySQL | 数据库 | 5.7.X 或 8.0 高版本 |
MQ | 消息中间件 | ActiveMQ 或 RabbitMQ 或 RocketMQ |
Ant Design Vue | Ant Design的Vue实现,前端开发使用 | 2.1.2 |
MyBatis-Plus | MyBatis增强工具 | 3.4.2 |
WxJava | 微信开发Java SDK | 4.1.0 |
Hutool | Java工具类库 | 5.6.6 |
开发部署
· 系统开发:https://docs.jeequan.com/docs/jeepay/dev_serv
· 通道对接:https://docs.jeequan.com/docs/jeepay/dev_channel
· 线上部署:https://docs.jeequan.com/docs/jeepay/deploy
· 接口文档:https://docs.jeequan.com/docs/jeepay/payment_api
功能模块
Jeepay运营平台功能
Jeepay商户系统功能
系统截图
以下截图是从实际已完成功能界面截取
开源地址
扫码关注本号,后台回复 支付
扫码关注本号,后台回复 支付
持续关注本号,分享更多项目源码