小而全的第三方登錄開源類庫,開箱即用!
JustAuth,如你所見,它僅僅是一個第三方授權登錄的工具類庫,它可以讓我們脫離繁瑣的第三方登錄 SDK,讓登錄變得 So easy!
JustAuth 集成了諸如:Github、Gitee、支付寶、新浪微博、微信、Google、Facebook、Twitter、StackOverflow 等國內外數十家第三方平臺。
1. 功能
- 豐富的 OAuth 平臺: 集成國內外數十家第三方平臺,實現快速接入。
- 自定義 state: 支持自定義 State 和緩存方式,開發者可根據實際情況選擇任意緩存插件。
- 自定義 OAuth: 提供統一接口,支持接入任意 OAuth 網站,快速實現 OAuth 登錄功能。更容易適配自有的 OAuth 服務。
- 自定義 Http: 接口 HTTP 工具,開發者可以根據自己項目的實際情況選擇相對應的 HTTP 工具。
- 自定義 Scope: 支持自定義 scope,以適配更多的業務場景,而不僅僅是為了登錄。
- 代碼規范·簡單: JustAuth 代碼嚴格遵守阿里巴巴編碼規約,結構清晰、邏輯簡單。
2. 快速使用(以 QQ 為例)
(1) 申請開發者
如果是第一次使用,需要到“QQ 互聯平臺”申請開發者,通過后創建應用并且復制三個信息:App ID、App Key和網站回調域。
(2) 集成 JustAuth
添加依賴:
<dependency>
<groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId>
<version>{latest-version}</version>
</dependency>
創建Request,把第一步的三個信息添加進去:
AuthRequest authRequest = new AuthQqRequest(AuthConfig.builder()
.clientId("App ID")
.clientSecret("App Key")
.redirectUri("網站回調域")
.build());
生成授權地址:
//這個鏈接可以直接在后臺重定向跳轉,也可以返回到前端跳轉
String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
或者生成靜態授權頁面:
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);
或者生成動態授權頁面:
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()));
JustAuth 的團隊還在持續接入其他平臺的授權登錄,感興趣的同學可以關注一下。
開源地址:https://github.com/justauth/JustAuth