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(); }