史上最全的整合第三方授權(quán)登錄的工具類庫,JustAuth 搞定一切!
JustAuth,如你所見,它僅僅是一個(gè)第三方授權(quán)登錄的工具類庫,它可以讓我們脫離繁瑣的第三方登錄 SDK,讓登錄變得 So easy!
圖片
JustAuth 集成了諸如:Github、Gitee、支付寶、新浪微博、微信、Google、Facebook、Twitter、StackOverflow 等國內(nèi)外數(shù)十家第三方平臺(tái)。
1.功能
- 豐富的 OAuth 平臺(tái): 集成國內(nèi)外數(shù)十家第三方平臺(tái),實(shí)現(xiàn)快速接入。
- 自定義 state: 支持自定義 State 和緩存方式,開發(fā)者可根據(jù)實(shí)際情況選擇任意緩存插件。
- 自定義 OAuth: 提供統(tǒng)一接口,支持接入任意 OAuth 網(wǎng)站,快速實(shí)現(xiàn) OAuth 登錄功能。更容易適配自有的 OAuth 服務(wù)。
- 自定義 Http: 接口 HTTP 工具,開發(fā)者可以根據(jù)自己項(xiàng)目的實(shí)際情況選擇相對(duì)應(yīng)的 HTTP 工具。
- 自定義 Scope: 支持自定義 scope,以適配更多的業(yè)務(wù)場景,而不僅僅是為了登錄。
- 代碼規(guī)范·簡單: JustAuth 代碼嚴(yán)格遵守阿里巴巴編碼規(guī)約,結(jié)構(gòu)清晰、邏輯簡單。
2.快速使用(以 QQ 為例)
(1) 申請(qǐng)開發(fā)者
如果是第一次使用,需要到“QQ 互聯(lián)平臺(tái)”申請(qǐng)開發(fā)者,通過后創(chuàng)建應(yīng)用并且復(fù)制三個(gè)信息:App ID、App Key和網(wǎng)站回調(diào)域。
(2) 集成 JustAuth
添加依賴:
<dependency>
<groupId>me.zhyd.oauth</groupId>
<artifactId>JustAuth</artifactId>
<version>{latest-version}</version>
</dependency>
創(chuàng)建Request,把第一步的三個(gè)信息添加進(jìn)去:
AuthRequest authRequest = new AuthQqRequest(AuthConfig.builder()
.clientId("App ID")
.clientSecret("App Key")
.redirectUri("網(wǎng)站回調(diào)域")
.build());
生成授權(quán)地址:
//這個(gè)鏈接可以直接在后臺(tái)重定向跳轉(zhuǎn),也可以返回到前端跳轉(zhuǎn)
String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
或者生成靜態(tài)授權(quán)頁面:
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("github")
.authConfig(AuthConfig.builder()
.clientId("clientId")
.clientSecret("clientSecret")
.redirectUri("redirectUri")
.build())
.build();
// 生成授權(quán)頁面
authRequest.authorize("state");
// 授權(quán)登錄后會(huì)返回code(auth_code(僅限支付寶))、state,1.8.0版本后,可以用AuthCallback類作為回調(diào)接口的參數(shù)
// 注:JustAuth默認(rèn)保存state的時(shí)效為3分鐘,3分鐘內(nèi)未使用則會(huì)自動(dòng)清除過期的state
authRequest.login(callback);
或者生成動(dòng)態(tài)授權(quán)頁面:
AuthRequest authRequest = AuthRequestBuilder.builder()
.source("gitee")
.authConfig((source) -> {
// 通過 source 動(dòng)態(tài)獲取 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 的團(tuán)隊(duì)還在持續(xù)接入其他平臺(tái)的授權(quán)登錄,感興趣的同學(xué)可以關(guān)注一下。
3.開源地址
https://github.com/justauth/JustAuth