一句话总结:只需引入一个依赖,几行代码即可搞定微信、支付宝、GitHub、Gitee、钉钉等 40+ 平台的统一授权登录,轻量、无侵入、生产可用。

💡 为什么需要它?

在做企业级项目或 SaaS 产品时,“第三方登录”几乎是标配。但实际开发中,我们往往会遇到这些痛点:

  • 🔍 各平台文档风格迥异,OAuth2 流程实现反复踩坑
  • 📦 官方 SDK 体积大、依赖重、升级频繁
  • 🧩 每次新增一个平台都要重写授权链路,维护成本极高
  • 🛡️ Token 刷新、用户信息解析、防重放攻击等细节容易遗漏

有没有一个统一、轻量、开箱即用的解决方案?当然有。今天给大家安利我日常开发中反复验证过的神器:JustAuth

✨ 核心亮点

特性 说明
🌐 平台全覆盖 内置 GitHub、Gitee、微信、支付宝、QQ、钉钉、飞书、百度、华为、微博、Twitter、Google 等 40+ 主流平台
📦 极简接入 不依赖 Spring 等重型框架,纯 Java 实现,Maven/Gradle 一行引入即可使用
🛠 统一抽象 屏蔽各平台 OAuth2 差异,提供 AuthRequest 统一接口,授权、回调、获取用户信息一套流程走到底
🔌 高度可扩展 支持自定义平台扩展,内置丰富的默认用户字段解析,企业级项目可直接复用
📚 文档完善 & 活跃维护 详细接入指南 + Spring Boot Starter 扩展,Issue 响应快,生产环境验证充分

⚡ 快速上手(3 步搞定)

1️⃣ 引入依赖

xml

    <groupId>me.zhyd.oauth</groupId>
    <artifactId>JustAuth</artifactId>
    <version>1.16.6</version> <!-- 请以仓库最新发布版本为准 -->
</dependency>

2️⃣ 初始化授权

java
AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
        .clientId("你的ClientID")
        .clientSecret("你的ClientSecret")
        .redirectUri("https://yourdomain.com/oauth/callback")
        .build());

3️⃣ 发起授权 & 处理回调java

// 跳转授权页
String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());

// 回调处理
AuthResponse response = authRequest.login(AuthCallback.builder()
        .code("授权码")
        .state("防CSRF状态码")
        .build());

if (response.ok()) {
    AuthUser user = (AuthUser) response.getData();
    System.out.println("登录成功!用户昵称:" + user.getNickname());
    System.out.println("头像地址:" + user.getAvatar());
}

💡 提示:实际项目中建议结合 Session/JWT 使用,并开启 state 校验防 CSRF 攻击。

🌍 为什么选择 JustAuth?

  1. 不重复造轮子:把各平台的“脏活累活”封装干净,开发者只需关注业务逻辑。
  2. 轻量无侵入:没有强制绑定 Spring 生态,老项目、微服务、Serverless 都能无缝集成。
  3. 经过大规模验证:众多企业项目在生产环境使用,稳定性与安全性有保障。
  4. 开源友好:Gitee 高星项目,社区活跃,欢迎提 Issue 或 PR 共建生态。

📌 适合谁用?

  • ✅ 正在搭建统一身份认证(SSO)系统的架构师
  • ✅ 需要快速接入多平台登录的全栈/后端开发
  • ✅ 希望减少第三方 SDK 依赖、控制包体积的团队
  • ✅ 学习 OAuth2 授权流程的初学者(源码结构清晰,极佳学习案例)

🔗 项目地址 & 支持

  • 📦 Gitee 仓库:https://gitee.com/thomasblog/JustAuth
  • 📖 官方文档:仓库内含详细接入指南与 FAQ
  • ⭐ 如果对你有帮助,欢迎 Star 支持,或提交 PR/Issue 一起完善它!