diff --git a/src/main/java/me/zhyd/oauth/config/AuthSource.java b/src/main/java/me/zhyd/oauth/config/AuthSource.java index f7122108d76cc767d328e81a889029a94bd096bc..1ea6704427bfa47502506e8c6cf626559ec6b1e9 100644 --- a/src/main/java/me/zhyd/oauth/config/AuthSource.java +++ b/src/main/java/me/zhyd/oauth/config/AuthSource.java @@ -294,7 +294,7 @@ public enum AuthSource { @Override public String userInfo() { - return "https://oauth2.googleapis.com/tokeninfo"; + return "https://www.googleapis.com/oauth2/v3/userinfo"; } }, /** diff --git a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java index 18b49ad33ddb105af02256acb04836ee09de22da..07ce7da703a57a1aa77c681990c609d1c8a6dc28 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java @@ -81,7 +81,7 @@ public class AuthAlipayRequest extends AuthDefaultRequest { .location(location) .gender(AuthUserGender.getRealGender(response.getGender())) .token(authToken) - .source(AuthSource.ALIPAY) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java index 92d97a3b66d84b30955d456d1acfe39cc74e183e..5ce2149a1ebdd3c4f4fa4314e8fbdf12f203f1cb 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java @@ -8,6 +8,7 @@ import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.enums.AuthUserGender; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.*; +import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -39,14 +40,19 @@ public class AuthBaiduRequest extends AuthDefaultRequest { .uuid(object.getString("userid")) .username(object.getString("username")) .nickname(object.getString("username")) - .avatar(object.getString("portrait")) + .avatar(getAvatar(object)) .remark(object.getString("userdetail")) .gender(AuthUserGender.getRealGender(object.getString("sex"))) .token(authToken) - .source(AuthSource.BAIDU) + .source(source) .build(); } + private String getAvatar(JSONObject object) { + String protrait = object.getString("portrait"); + return StringUtils.isEmpty(protrait) ? null : String.format("http://himg.bdimg.com/sys/portrait/item/%s.jpg", protrait); + } + @Override public AuthResponse revoke(AuthToken authToken) { HttpResponse response = doGetRevoke(authToken); diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java index 070d57beac17ac03efa1def3fb292052b6a20d15..98e45bfdbec639cdce1631408c0b5c3cf4ff35ac 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java @@ -55,7 +55,7 @@ public class AuthCodingRequest extends AuthDefaultRequest { .email(object.getString("email")) .remark(object.getString("slogan")) .token(authToken) - .source(AuthSource.CODING) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java index 9043f045a71c28d709a70c5313b934455dc55169..3a72d3701643900d9dd727d790aefff508186ab7 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java @@ -44,7 +44,7 @@ public class AuthCsdnRequest extends AuthDefaultRequest { .blog(object.getString("website")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.CSDN) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java index 9f022fed84611d824b3c70af13102a40181fb10e..ca0491dab7e33b0e681f21882717d3d72cde5691 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java @@ -20,7 +20,6 @@ import me.zhyd.oauth.utils.UrlBuilder; * @version 1.0 * @since 1.8 */ -@Data @Slf4j public abstract class AuthDefaultRequest implements AuthRequest { protected AuthConfig config; diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 69956a77de86ffc5b3b89a79d98eb2f92e838906..1b2d9a4d609b914f8ec7a913e17b0c8c9a3fd467 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -52,7 +52,7 @@ public class AuthDingTalkRequest extends AuthDefaultRequest { .nickname(object.getString("nick")) .username(object.getString("nick")) .gender(AuthUserGender.UNKNOWN) - .source(AuthSource.DINGTALK) + .source(source) .token(token) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java index 9c46b4fb02dd5c79fca172828dd413b66f71af64..a68f232291330759c870c35570926f7bbdb517f1 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -42,7 +42,7 @@ public class AuthDouyinRequest extends AuthDefaultRequest { .remark(userInfoObject.getString("description")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.DOUYIN) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java index 771c894104d228056262eda062767629ab0d3a6f..6d7cc2bab621106c0d703561791df855f9d2b241 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java @@ -51,7 +51,7 @@ public class AuthFacebookRequest extends AuthDefaultRequest { .email(object.getString("email")) .gender(AuthUserGender.getRealGender(object.getString("gender"))) .token(authToken) - .source(AuthSource.FACEBOOK) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java index 0522003d42eb80da151cbdd20da8e3577a0a7f92..e32c1243e3107de906cd4e6e33221ea03d35667c 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java @@ -55,7 +55,7 @@ public class AuthGiteeRequest extends AuthDefaultRequest { .remark(object.getString("bio")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.GITEE) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java index c843a8b104779b480a60661261a8a21eecd70fbd..f71378ced50992fc05c9ccba06b15ccaed3c5035 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java @@ -9,6 +9,9 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.utils.GlobalAuthUtil; + +import java.util.Map; /** * Github登录 @@ -26,12 +29,14 @@ public class AuthGithubRequest extends AuthDefaultRequest { @Override protected AuthToken getAccessToken(AuthCallback authCallback) { HttpResponse response = doPostAuthorizationCode(authCallback.getCode()); - JSONObject accessTokenObject = JSONObject.parseObject(response.body()); - this.checkResponse(accessTokenObject); + Map res = GlobalAuthUtil.parseStringToMap(response.body()); + if (res.containsKey("error")) { + throw new AuthException(res.get("error") + ":" + res.get("error_description")); + } return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .scope(accessTokenObject.getString("scope")) - .tokenType(accessTokenObject.getString("token_type")) + .accessToken(res.get("access_token")) + .scope(res.get("scope")) + .tokenType(res.get("token_type")) .build(); } @@ -39,7 +44,9 @@ public class AuthGithubRequest extends AuthDefaultRequest { protected AuthUser getUserInfo(AuthToken authToken) { HttpResponse response = doGetUserInfo(authToken); JSONObject object = JSONObject.parseObject(response.body()); - this.checkResponse(object); + if (object.containsKey("error")) { + throw new AuthException(object.getString("error_description")); + } return AuthUser.builder() .uuid(object.getString("id")) .username(object.getString("login")) @@ -52,7 +59,7 @@ public class AuthGithubRequest extends AuthDefaultRequest { .remark(object.getString("bio")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.GITHUB) + .source(source) .build(); } @@ -62,8 +69,6 @@ public class AuthGithubRequest extends AuthDefaultRequest { * @param object 请求响应内容 */ private void checkResponse(JSONObject object) { - if (object.containsKey("error")) { - throw new AuthException(object.getString("error_description")); - } + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java index a6a603af5ab441b3327661c1387fa4e5131c9878..bb648d35d20324720e1ab4df8d283b1d866e076a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java @@ -1,5 +1,6 @@ package me.zhyd.oauth.request; +import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; @@ -40,25 +41,28 @@ public class AuthGoogleRequest extends AuthDefaultRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { - HttpResponse response = doGetUserInfo(authToken); + HttpResponse response = HttpRequest.post(userInfoUrl(authToken)) + .header("Authorization", "Bearer " + authToken.getAccessToken()) + .execute(); String userInfo = response.body(); JSONObject object = JSONObject.parseObject(userInfo); this.checkResponse(object); return AuthUser.builder() .uuid(object.getString("sub")) - .username(object.getString("name")) + .username(object.getString("email")) .avatar(object.getString("picture")) .nickname(object.getString("name")) .location(object.getString("locale")) .email(object.getString("email")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.GOOGLE) + .source(source) .build(); } /** * 返回认证url,可自行跳转页面 + * https://openidconnect.googleapis.com/v1/userinfo * * @return 返回授权地址 */ @@ -81,7 +85,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest { */ @Override protected String userInfoUrl(AuthToken authToken) { - return UrlBuilder.fromBaseUrl(source.userInfo()).queryParam("id_token", authToken.getAccessToken()).build(); + return UrlBuilder.fromBaseUrl(source.userInfo()).queryParam("access_token", authToken.getAccessToken()).build(); } /** @@ -91,7 +95,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest { */ private void checkResponse(JSONObject object) { if (object.containsKey("error") || object.containsKey("error_description")) { - throw new AuthException(object.getString("error_description")); + throw new AuthException(object.containsKey("error") + ":" + object.getString("error_description")); } } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java index 2fddab29c7ff4d5549f391ba2ceea210b1026063..8d7edb6251d939211aee7feb76c2309719298aeb 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java @@ -75,7 +75,7 @@ public class AuthMiRequest extends AuthDefaultRequest { .email(user.getString("mail")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.MI) + .source(source) .build(); // 获取用户邮箱手机号等信息 diff --git a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java index 4b5e864d74d91778e225fa5c8b2bbfa24173e58b..0fc34b8dc3c83f63f322a1ad6ca44ce545dd931f 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java @@ -83,7 +83,7 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest { .email(object.getString("mail")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.MICROSOFT) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java index 955a8071bab81caead9cbe41278fe69e33799e9b..0766de19e9f22bc159d1efde36646d5eb3694853 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java @@ -52,7 +52,7 @@ public class AuthOschinaRequest extends AuthDefaultRequest { .gender(AuthUserGender.getRealGender(object.getString("gender"))) .email(object.getString("email")) .token(authToken) - .source(AuthSource.OSCHINA) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java index e86a2479c7c5176bb0c429325a9b1ffaff1c79b9..b31893a4e6530524c168c90343c7b66e6d791446 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java @@ -58,7 +58,7 @@ public class AuthPinterestRequest extends AuthDefaultRequest { .gender(AuthUserGender.UNKNOWN) .remark(userObj.getString("bio")) .token(authToken) - .source(PINTEREST) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index 7943ea340ff16edb49782f12a2ea10f755bebd3e..1b8d6f9182891923b4cef3c2111d1fb18c3b4a37 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -65,7 +65,7 @@ public class AuthQqRequest extends AuthDefaultRequest { .uuid(openId) .gender(AuthUserGender.getRealGender(object.getString("gender"))) .token(authToken) - .source(AuthSource.QQ) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java index c4d4af5d38577a4275f0f22b21eb1192bcefca40..7a16b45cbf69e0d97e02a4ee4733e73a0729faca 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java @@ -45,7 +45,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest { .company(getCompany(userObj)) .gender(getGender(userObj)) .token(authToken) - .source(RENREN) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java index 3784012f17bb28b1b66ed9e46eb939d7c712aa4c..655c9c5cd49dfea1cbd87b6f2cad3fc8deb1f580 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java @@ -63,7 +63,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest { .blog(userObj.getString("website_url")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(STACK_OVERFLOW) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java index 55760bdeb191bcf9182f00f1df98f3b4d60782a4..7a3b522eadbbbddabf848b03a66db274564a7a82 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java @@ -50,7 +50,7 @@ public class AuthTaobaoRequest extends AuthDefaultRequest { .nickname(nick) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.TAOBAO) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java index 81c6b3cb0281e59051a6501cc97d8b5d09bb69ba..d8e79f6068ef28d0e6f1d76e07638fa98aa5e5ce 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java @@ -67,7 +67,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest { .email(object.getString("email")) .gender(AuthUserGender.UNKNOWN) .token(authToken) - .source(AuthSource.TEAMBITION) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java index 8a817c4715c73ebcfcd3e250180a4eb3d2c86899..7aaa77dc1d497812d4543508339a7abd5eac9519 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java @@ -55,7 +55,7 @@ public class AuthTencentCloudRequest extends AuthDefaultRequest { .email(object.getString("email")) .remark(object.getString("slogan")) .token(authToken) - .source(AuthSource.TENCENT_CLOUD) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java index 85ff25e21121894829ec4910833b3c06c09d1d1a..2a1c9790f0f85e7329bfbfc949f1449dff05a0cf 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java @@ -60,7 +60,7 @@ public class AuthToutiaoRequest extends AuthDefaultRequest { .remark(user.getString("description")) .gender(AuthUserGender.getRealGender(user.getString("gender"))) .token(authToken) - .source(AuthSource.TOUTIAO) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java index 2d426c5fc0b4f246ac0c45cb0516fb7c805901ff..dbc029a7f37a8a4f19adb9571077ce917a0a3d97 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java @@ -56,7 +56,7 @@ public class AuthWeChatRequest extends AuthDefaultRequest { .uuid(openId) .gender(AuthUserGender.getRealGender(object.getString("sex"))) .token(authToken) - .source(AuthSource.WECHAT) + .source(source) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java index a7925730da8e64b57ae8ec3ae959735db8a8e862..0297ba771ec40eb9316ae0de54b28bf1b35302a5 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java @@ -69,7 +69,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest { .remark(object.getString("description")) .gender(AuthUserGender.getRealGender(object.getString("gender"))) .token(authToken) - .source(AuthSource.WEIBO) + .source(source) .build(); } diff --git a/update.md b/update.md index ce8152ea04961d9c2b798f0c81c40cf449fbde4f..70d7689da4036cbbaa0e3e7507024f6c9796e29b 100644 --- a/update.md +++ b/update.md @@ -7,7 +7,8 @@ 5. 优化`AuthConfig`、`AuthResponse`类,去掉不必要的lombonk注解,减少编译后的代码量 6. 使用lombok注解优化枚举类 7. `AuthQqRequest`增加refresh方法 -8. 优化代码 +8. 修复google登录无法获取用户信息的问题 +9. 优化代码 ### 2019/07/18