diff --git a/docs/oauth.md b/docs/oauth.md
index 897c15df952ee44750588c8e3858beef632195e8..9b46b35a2b5630121bb7de43a95252c479af8b3f 100644
--- a/docs/oauth.md
+++ b/docs/oauth.md
@@ -67,7 +67,7 @@
- 网站B:可以理解成 Oschina
- 第三方C:可以理解成 Github
-需求:你想通过Github第三方登录Oschina
+需求:你想通过Github第三方登录Oschina。(_注:下面的内容为流程图,如果您在阅读的时候显示为纯文字,请刷新页面_)
sequenceDiagram
diff --git a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java
index 27f1d0915e875e1caf574050acdd4ecf64819874..eb44f3996ca19a33771ed3e21120c797a87f865a 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java
@@ -94,10 +94,15 @@ public abstract class AuthDefaultRequest implements AuthRequest {
*/
private AuthResponse responseError(Exception e) {
int errorCode = AuthResponseStatus.FAILURE.getCode();
+ String errorMsg = e.getMessage();
if (e instanceof AuthException) {
- errorCode = ((AuthException) e).getErrorCode();
+ AuthException authException = ((AuthException) e);
+ errorCode = authException.getErrorCode();
+ if (StringUtils.isNotEmpty(authException.getErrorMsg())) {
+ errorMsg = authException.getErrorMsg();
+ }
}
- return AuthResponse.builder().code(errorCode).msg(e.getMessage()).build();
+ return AuthResponse.builder().code(errorCode).msg(errorMsg).build();
}
/**
diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
index 531e7b37eb6131b9f76539e9880eb0c68704e8e5..51f9c5d02be411b6bfa0c06aa29fbe8486999cdf 100644
--- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
+++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java
@@ -42,13 +42,15 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
HttpResponse response = doGetUserInfo(authToken);
JSONObject userInfoObject = JSONObject.parseObject(response.body());
this.checkResponse(userInfoObject);
+ JSONObject dataObj = userInfoObject.getJSONObject("data");
return AuthUser.builder()
- .uuid(userInfoObject.getString("union_id"))
- .username(userInfoObject.getString("nickname"))
- .nickname(userInfoObject.getString("nickname"))
- .avatar(userInfoObject.getString("avatar"))
- .remark(userInfoObject.getString("description"))
- .gender(AuthUserGender.UNKNOWN)
+ .uuid(dataObj.getString("union_id"))
+ .username(dataObj.getString("nickname"))
+ .nickname(dataObj.getString("nickname"))
+ .avatar(dataObj.getString("avatar"))
+ .remark(dataObj.getString("description"))
+ .gender(AuthUserGender.getRealGender(dataObj.getString("gender")))
+ .location(String.format("%s %s %s", dataObj.getString("country"), dataObj.getString("province"), dataObj.getString("city")))
.token(authToken)
.source(source.toString())
.build();
@@ -87,12 +89,13 @@ public class AuthDouyinRequest extends AuthDefaultRequest {
String accessTokenStr = response.body();
JSONObject object = JSONObject.parseObject(accessTokenStr);
this.checkResponse(object);
+ JSONObject dataObj = object.getJSONObject("data");
return AuthToken.builder()
- .accessToken(object.getString("access_token"))
- .openId(object.getString("open_id"))
- .expireIn(object.getIntValue("expires_in"))
- .refreshToken(object.getString("refresh_token"))
- .scope(object.getString("scope"))
+ .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();
}