Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/main/java/me/zhyd/oauth/config/AuthDefaultSource.java
This commit is contained in:
yadong.zhang 2024-08-03 16:34:13 +08:00
commit 6cc414997d
29 changed files with 230 additions and 55 deletions

View File

@ -58,7 +58,7 @@
<maven-gpg-version>1.6</maven-gpg-version> <maven-gpg-version>1.6</maven-gpg-version>
<maven.test.skip>false</maven.test.skip> <maven.test.skip>false</maven.test.skip>
<simple-http.version>1.0.5</simple-http.version> <simple-http.version>1.0.5</simple-http.version>
<lombok-version>1.18.20</lombok-version> <lombok-version>1.18.30</lombok-version>
<junit-version>4.13.2</junit-version> <junit-version>4.13.2</junit-version>
<fastjson-version>1.2.83</fastjson-version> <fastjson-version>1.2.83</fastjson-version>
<alipay-sdk-version>4.17.5.ALL</alipay-sdk-version> <alipay-sdk-version>4.17.5.ALL</alipay-sdk-version>

View File

@ -1321,6 +1321,33 @@ public enum AuthDefaultSource implements AuthSource {
public Class<? extends AuthDefaultRequest> getTargetClass() { public Class<? extends AuthDefaultRequest> getTargetClass() {
return AuthAppleRequest.class; return AuthAppleRequest.class;
} }
},
FIGMA{
@Override
public String authorize() {
return "https://www.figma.com/oauth";
}
@Override
public String accessToken() {
return "https://www.figma.com/api/oauth/token";
}
@Override
public String userInfo() {
return "https://api.figma.com/v1/me";
}
@Override
public String refresh() {
return "https://www.figma.com/api/oauth/refresh";
}
@Override
public Class<? extends AuthDefaultRequest> getTargetClass() {
return null;
}
} }
} }

View File

@ -0,0 +1,29 @@
package me.zhyd.oauth.enums.scope;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* Figma OAuth 授权范围
* <a href="https://www.figma.com/developers/api#authentication-scopes">...</a>
*
* @author xiangqian
* @since 1.16.6
*/
@Getter
@AllArgsConstructor
public enum AuthFigmaScope implements AuthScope {
FILE_CONTENT("files:read", "Read files, projects, users, versions, comments, components & styles, and webhooks", true),
VARIABLES("file_variables:read,file_variables:write", "Read and write to variables in Figma file. Note: this is only available to members in Enterprise organizations", false),
COMMENTS("file_comments:write", "Post and delete comments and comment reactions in files", false),
DEV_RESOURCES("file_dev_resources:read,file_dev_resources:write", "Read and write to dev resources in files", false),
LIBRARY_ANALYTICS("library_analytics:read", "Read your design system analytics", false),
WEBHOOKS("webhooks:write", "Create and manage webhooks", false);
private final String scope;
private final String description;
private final boolean isDefault;
}

View File

@ -111,8 +111,8 @@ public abstract class AbstractAuthMicrosoftRequest extends AuthDefaultRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(getToken(refreshTokenUrl(authToken.getRefreshToken()))) .data(getToken(refreshTokenUrl(authToken.getRefreshToken())))
.build(); .build();

View File

@ -175,7 +175,7 @@ public class AuthAlipayRequest extends AuthDefaultRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setGrantType("refresh_token"); request.setGrantType("refresh_token");
request.setRefreshToken(authToken.getRefreshToken()); request.setRefreshToken(authToken.getRefreshToken());
@ -188,7 +188,7 @@ public class AuthAlipayRequest extends AuthDefaultRequest {
if (!response.isSuccess()) { if (!response.isSuccess()) {
throw new AuthException(response.getSubMsg()); throw new AuthException(response.getSubMsg());
} }
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(response.getAccessToken()) .accessToken(response.getAccessToken())

View File

@ -94,13 +94,13 @@ public class AuthAmazonRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
Map<String, String> form = new HashMap<>(7); Map<String, String> form = new HashMap<>(7);
form.put("grant_type", "refresh_token"); form.put("grant_type", "refresh_token");
form.put("refresh_token", authToken.getRefreshToken()); form.put("refresh_token", authToken.getRefreshToken());
form.put("client_id", config.getClientId()); form.put("client_id", config.getClientId());
form.put("client_secret", config.getClientSecret()); form.put("client_secret", config.getClientSecret());
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(getToken(form, this.source.refresh())) .data(getToken(form, this.source.refresh()))
.build(); .build();

View File

@ -81,7 +81,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
String refreshUrl = UrlBuilder.fromBaseUrl(this.source.refresh()) String refreshUrl = UrlBuilder.fromBaseUrl(this.source.refresh())
.queryParam("grant_type", "refresh_token") .queryParam("grant_type", "refresh_token")
.queryParam("refresh_token", authToken.getRefreshToken()) .queryParam("refresh_token", authToken.getRefreshToken())
@ -89,7 +89,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
.queryParam("client_secret", this.config.getClientSecret()) .queryParam("client_secret", this.config.getClientSecret())
.build(); .build();
String response = new HttpUtils(config.getHttpConfig()).get(refreshUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(refreshUrl).getBody();
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getAuthToken(response)) .data(this.getAuthToken(response))
.build(); .build();

View File

@ -70,7 +70,7 @@ public abstract class AuthDefaultRequest implements AuthRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse login(AuthCallback authCallback) { public AuthResponse<AuthUser> login(AuthCallback authCallback) {
try { try {
checkCode(authCallback); checkCode(authCallback);
if (!config.isIgnoreCheckState()) { if (!config.isIgnoreCheckState()) {
@ -79,7 +79,7 @@ public abstract class AuthDefaultRequest implements AuthRequest {
AuthToken authToken = this.getAccessToken(authCallback); AuthToken authToken = this.getAccessToken(authCallback);
AuthUser user = this.getUserInfo(authToken); AuthUser user = this.getUserInfo(authToken);
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build(); return AuthResponse.<AuthUser>builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build();
} catch (Exception e) { } catch (Exception e) {
Log.error("Failed to login with oauth authorization.", e); Log.error("Failed to login with oauth authorization.", e);
return this.responseError(e); return this.responseError(e);
@ -96,7 +96,7 @@ public abstract class AuthDefaultRequest implements AuthRequest {
* @param e 具体的异常 * @param e 具体的异常
* @return AuthResponse * @return AuthResponse
*/ */
AuthResponse responseError(Exception e) { AuthResponse<AuthUser> responseError(Exception e) {
int errorCode = AuthResponseStatus.FAILURE.getCode(); int errorCode = AuthResponseStatus.FAILURE.getCode();
String errorMsg = e.getMessage(); String errorMsg = e.getMessage();
if (e instanceof AuthException) { if (e instanceof AuthException) {
@ -106,7 +106,7 @@ public abstract class AuthDefaultRequest implements AuthRequest {
errorMsg = authException.getErrorMsg(); errorMsg = authException.getErrorMsg();
} }
} }
return AuthResponse.builder().code(errorCode).msg(errorMsg).build(); return AuthResponse.<AuthUser>builder().code(errorCode).msg(errorMsg).build();
} }
/** /**

View File

@ -59,8 +59,8 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(getToken(refreshTokenUrl(oldToken.getRefreshToken()))) .data(getToken(refreshTokenUrl(oldToken.getRefreshToken())))
.build(); .build();

View File

@ -117,7 +117,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
Map<String, String> form = new HashMap<>(4); Map<String, String> form = new HashMap<>(4);
form.put("refresh_token", oldToken.getRefreshToken()); form.put("refresh_token", oldToken.getRefreshToken());
form.put("grant_type", "refresh_token"); form.put("grant_type", "refresh_token");
@ -129,7 +129,7 @@ public class AuthElemeRequest extends AuthDefaultRequest {
this.checkResponse(object); this.checkResponse(object);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(object.getString("access_token")) .accessToken(object.getString("access_token"))

View File

@ -98,12 +98,12 @@ public class AuthFeishuRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
JSONObject requestObject = new JSONObject(); JSONObject requestObject = new JSONObject();
requestObject.put("app_access_token", this.getAppAccessToken()); requestObject.put("app_access_token", this.getAppAccessToken());
requestObject.put("grant_type", "refresh_token"); requestObject.put("grant_type", "refresh_token");
requestObject.put("refresh_token", authToken.getRefreshToken()); requestObject.put("refresh_token", authToken.getRefreshToken());
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(getToken(requestObject, this.source.refresh())) .data(getToken(requestObject, this.source.refresh()))
.build(); .build();

View File

@ -0,0 +1,118 @@
package me.zhyd.oauth.request;
import com.alibaba.fastjson.JSONObject;
import com.xkcoding.http.support.HttpHeader;
import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource;
import me.zhyd.oauth.enums.AuthResponseStatus;
import me.zhyd.oauth.enums.scope.AuthFigmaScope;
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.*;
/**
* Figma登录
* @author xiangqian
* @since 1.16.6
*/
public class AuthFigmaRequest extends AuthDefaultRequest {
public AuthFigmaRequest(AuthConfig config) {
super(config, AuthDefaultSource.FIGMA);
}
public AuthFigmaRequest(AuthConfig config, AuthStateCache authStateCache) {
super(config, AuthDefaultSource.FIGMA, authStateCache);
}
@Override
public String authorize(String state) {
return UrlBuilder.fromBaseUrl(super.authorize(state))
.queryParam("scope", this.getScopes(",", true, AuthScopeUtils.getDefaultScopes(AuthFigmaScope.values())))
.build();
}
@Override
protected AuthToken getAccessToken(AuthCallback authCallback) {
HttpHeader header = new HttpHeader()
.add("content-type", "application/x-www-form-urlencoded")
.add("Authorization", "Basic " + Base64Utils.encode(config.getClientId().concat(":").concat(config.getClientSecret())));
String response = new HttpUtils(config.getHttpConfig()).post(super.accessTokenUrl(authCallback.getCode()), null, header, true).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response);
this.checkResponse(accessTokenObject);
return AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token"))
.refreshToken(accessTokenObject.getString("refresh_token"))
.scope(accessTokenObject.getString("scope"))
.userId(accessTokenObject.getString("user_id"))
.expireIn(accessTokenObject.getIntValue("expires_in"))
.build();
}
@Override
public AuthResponse<AuthToken> refresh(AuthToken authToken) {
HttpHeader header = new HttpHeader().add("content-type", "application/x-www-form-urlencoded");
String response = new HttpUtils(config.getHttpConfig()).post(this.refreshTokenUrl(authToken.getRefreshToken()), null, header, false).getBody();
JSONObject dataObj = JSONObject.parseObject(response);
this.checkResponse(dataObj);
return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder()
.accessToken(dataObj.getString("access_token"))
.openId(dataObj.getString("open_id"))
.expireIn(dataObj.getIntValue("expires_in"))
.refreshToken(dataObj.getString("refresh_token"))
.scope(dataObj.getString("scope"))
.build())
.build();
}
@Override
protected String refreshTokenUrl(String refreshToken) {
return UrlBuilder.fromBaseUrl(source.refresh())
.queryParam("client_id", config.getClientId())
.queryParam("client_secret", config.getClientSecret())
.queryParam("refresh_token", refreshToken)
.build();
}
@Override
protected AuthUser getUserInfo(AuthToken authToken) {
HttpHeader header = new HttpHeader().add("Authorization", "Bearer " + authToken.getAccessToken());
String response = new HttpUtils(config.getHttpConfig()).get(super.userInfoUrl(authToken), null, header, false).getBody();
JSONObject dataObj = JSONObject.parseObject(response);
this.checkResponse(dataObj);
return AuthUser.builder()
.rawUserInfo(dataObj)
.uuid(dataObj.getString("id"))
.username(dataObj.getString("handle"))
.avatar(dataObj.getString("img_url"))
.email(dataObj.getString("email"))
.token(authToken)
.source(source.toString())
.build();
}
/**
* 校验响应结果
*
* @param object 接口返回的结果
*/
private void checkResponse(JSONObject object) {
if (object.containsKey("error")) {
throw new AuthException(object.getString("error") + ":" + object.getString("message"));
}
}
}

View File

@ -99,7 +99,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
Map<String, String> form = new HashMap<>(7); Map<String, String> form = new HashMap<>(7);
form.put("client_id", config.getClientId()); form.put("client_id", config.getClientId());
form.put("client_secret", config.getClientSecret()); form.put("client_secret", config.getClientSecret());
@ -107,7 +107,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest {
form.put("grant_type", "refresh_token"); form.put("grant_type", "refresh_token");
String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false).getBody();
return AuthResponse.builder().code(SUCCESS.getCode()).data(getAuthToken(response)).build(); return AuthResponse.<AuthToken>builder().code(SUCCESS.getCode()).data(getAuthToken(response)).build();
} }
private AuthToken getAuthToken(String response) { private AuthToken getAuthToken(String response) {

View File

@ -103,7 +103,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
Map<String, String> params = new HashMap<>(7); Map<String, String> params = new HashMap<>(7);
params.put("app_key", config.getClientId()); params.put("app_key", config.getClientId());
params.put("app_secret", config.getClientSecret()); params.put("app_secret", config.getClientSecret());
@ -114,7 +114,7 @@ public class AuthJdRequest extends AuthDefaultRequest {
this.checkResponse(object); this.checkResponse(object);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(object.getString("access_token")) .accessToken(object.getString("access_token"))

View File

@ -109,8 +109,8 @@ public class AuthKujialeRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
String response = new HttpUtils(config.getHttpConfig()).post(refreshTokenUrl(authToken.getRefreshToken())).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(refreshTokenUrl(authToken.getRefreshToken())).getBody();
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build(); return AuthResponse.<AuthToken>builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build();
} }
} }

View File

@ -88,7 +88,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("grant_type", "refresh_token"); params.put("grant_type", "refresh_token");
params.put("refresh_token", oldToken.getRefreshToken()); params.put("refresh_token", oldToken.getRefreshToken());
@ -96,7 +96,7 @@ public class AuthLineRequest extends AuthDefaultRequest {
params.put("client_secret", config.getClientSecret()); params.put("client_secret", config.getClientSecret());
String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); JSONObject accessTokenObject = JSONObject.parseObject(response);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(accessTokenObject.getString("access_token")) .accessToken(accessTokenObject.getString("access_token"))

View File

@ -78,7 +78,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
Map<String, String> form = new HashMap<>(7); Map<String, String> form = new HashMap<>(7);
form.put("app_id", config.getClientId()); form.put("app_id", config.getClientId());
form.put("secret", config.getClientSecret()); form.put("secret", config.getClientSecret());
@ -90,7 +90,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest {
this.checkResponse(object); this.checkResponse(object);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(object.getString("access_token")) .accessToken(object.getString("access_token"))

View File

@ -110,8 +110,8 @@ public class AuthMiRequest extends AuthDefaultRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(getToken(refreshTokenUrl(authToken.getRefreshToken()))) .data(getToken(refreshTokenUrl(authToken.getRefreshToken())))
.build(); .build();

View File

@ -64,15 +64,15 @@ public class AuthOktaRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
if (null == authToken.getRefreshToken()) { if (null == authToken.getRefreshToken()) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.ILLEGAL_TOKEN.getCode()) .code(AuthResponseStatus.ILLEGAL_TOKEN.getCode())
.msg(AuthResponseStatus.ILLEGAL_TOKEN.getMsg()) .msg(AuthResponseStatus.ILLEGAL_TOKEN.getMsg())
.build(); .build();
} }
String refreshUrl = refreshTokenUrl(authToken.getRefreshToken()); String refreshUrl = refreshTokenUrl(authToken.getRefreshToken());
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getAuthToken(refreshUrl)) .data(this.getAuthToken(refreshUrl))
.build(); .build();

View File

@ -39,9 +39,9 @@ public class AuthQqRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
String response = new HttpUtils(config.getHttpConfig()).get(refreshTokenUrl(authToken.getRefreshToken())).getBody(); String response = new HttpUtils(config.getHttpConfig()).get(refreshTokenUrl(authToken.getRefreshToken())).getBody();
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build(); return AuthResponse.<AuthToken>builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build();
} }
@Override @Override

View File

@ -60,8 +60,8 @@ public class AuthRenrenRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(SUCCESS.getCode()) .code(SUCCESS.getCode())
.data(getToken(this.refreshTokenUrl(authToken.getRefreshToken()))) .data(getToken(this.refreshTokenUrl(authToken.getRefreshToken())))
.build(); .build();

View File

@ -5,6 +5,7 @@ import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser;
/** /**
* JustAuth {@code Request}公共接口所有平台的{@code Request}都需要实现该接口 * JustAuth {@code Request}公共接口所有平台的{@code Request}都需要实现该接口
@ -49,7 +50,7 @@ public interface AuthRequest {
* @param authCallback 用于接收回调参数的实体 * @param authCallback 用于接收回调参数的实体
* @return 返回登录成功后的用户信息 * @return 返回登录成功后的用户信息
*/ */
default AuthResponse login(AuthCallback authCallback) { default AuthResponse<AuthUser> login(AuthCallback authCallback) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED); throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
} }
@ -69,7 +70,7 @@ public interface AuthRequest {
* @param authToken 登录成功后返回的Token信息 * @param authToken 登录成功后返回的Token信息
* @return AuthResponse * @return AuthResponse
*/ */
default AuthResponse refresh(AuthToken authToken) { default AuthResponse<AuthToken> refresh(AuthToken authToken) {
throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED); throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
} }
} }

View File

@ -79,11 +79,11 @@ public class AuthTaobaoRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
String tokenUrl = refreshTokenUrl(oldToken.getRefreshToken()); String tokenUrl = refreshTokenUrl(oldToken.getRefreshToken());
String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl).getBody(); String response = new HttpUtils(config.getHttpConfig()).post(tokenUrl).getBody();
JSONObject accessTokenObject = JSONObject.parseObject(response); JSONObject accessTokenObject = JSONObject.parseObject(response);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getAuthToken(accessTokenObject)) .data(this.getAuthToken(accessTokenObject))
.build(); .build();

View File

@ -87,7 +87,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
String uid = oldToken.getUid(); String uid = oldToken.getUid();
String refreshToken = oldToken.getRefreshToken(); String refreshToken = oldToken.getRefreshToken();
@ -99,7 +99,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest {
this.checkResponse(refreshTokenObject); this.checkResponse(refreshTokenObject);
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.accessToken(refreshTokenObject.getString("access_token")) .accessToken(refreshTokenObject.getString("access_token"))

View File

@ -41,14 +41,14 @@ public class AuthWeChatEnterpriseThirdQrcodeRequest extends AbstractAuthWeChatEn
} }
@Override @Override
public AuthResponse login(AuthCallback authCallback) { public AuthResponse<AuthUser> login(AuthCallback authCallback) {
try { try {
if (!config.isIgnoreCheckState()) { if (!config.isIgnoreCheckState()) {
AuthChecker.checkState(authCallback.getState(), source, authStateCache); AuthChecker.checkState(authCallback.getState(), source, authStateCache);
} }
AuthToken authToken = this.getAccessToken(authCallback); AuthToken authToken = this.getAccessToken(authCallback);
AuthUser user = this.getUserInfo(authToken); AuthUser user = this.getUserInfo(authToken);
return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build(); return AuthResponse.<AuthUser>builder().code(AuthResponseStatus.SUCCESS.getCode()).data(user).build();
} catch (Exception e) { } catch (Exception e) {
Log.error("Failed to login with oauth authorization.", e); Log.error("Failed to login with oauth authorization.", e);
return this.responseError(e); return this.responseError(e);

View File

@ -79,8 +79,8 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getToken(refreshTokenUrl(oldToken.getRefreshToken()))) .data(this.getToken(refreshTokenUrl(oldToken.getRefreshToken())))
.build(); .build();

View File

@ -69,8 +69,8 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest {
} }
@Override @Override
public AuthResponse refresh(AuthToken oldToken) { public AuthResponse<AuthToken> refresh(AuthToken oldToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(this.getToken(refreshTokenUrl(oldToken.getRefreshToken()))) .data(this.getToken(refreshTokenUrl(oldToken.getRefreshToken())))
.build(); .build();

View File

@ -87,8 +87,8 @@ public class AuthExtendRequest extends AuthDefaultRequest {
* @return AuthResponse * @return AuthResponse
*/ */
@Override @Override
public AuthResponse refresh(AuthToken authToken) { public AuthResponse<AuthToken> refresh(AuthToken authToken) {
return AuthResponse.builder() return AuthResponse.<AuthToken>builder()
.code(AuthResponseStatus.SUCCESS.getCode()) .code(AuthResponseStatus.SUCCESS.getCode())
.data(AuthToken.builder() .data(AuthToken.builder()
.openId("openId") .openId("openId")

View File

@ -45,10 +45,10 @@ public class AuthExtendRequestTest {
.code("code") .code("code")
.state(state) .state(state)
.build(); .build();
AuthResponse response = request.login(callback); AuthResponse<AuthUser> response = request.login(callback);
Assert.assertNotNull(response); Assert.assertNotNull(response);
AuthUser user = (AuthUser) response.getData(); AuthUser user = response.getData();
Assert.assertNotNull(user); Assert.assertNotNull(user);
System.out.println(JSON.toJSONString(user)); System.out.println(JSON.toJSONString(user));
} }
@ -74,7 +74,7 @@ public class AuthExtendRequestTest {
.redirectUri("http://redirectUri") .redirectUri("http://redirectUri")
.build()); .build());
AuthResponse response = request.refresh(AuthToken.builder().build()); AuthResponse<AuthToken> response = request.refresh(AuthToken.builder().build());
Assert.assertNotNull(response); Assert.assertNotNull(response);
System.out.println(JSON.toJSONString(response.getData())); System.out.println(JSON.toJSONString(response.getData()));