From 438660621e9f5b6077f5d3850b6eb624588a168c Mon Sep 17 00:00:00 2001 From: skqing <569141948@qq.com> Date: Tue, 18 Jun 2019 14:20:05 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=92=89=E9=92=89?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98=20https:?= =?UTF-8?q?//gitee.com/yadong.zhang/JustAuth/issues/IY1Z3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauth/request/AuthDingTalkRequest.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index f2ac937..1779545 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -2,7 +2,8 @@ package me.zhyd.oauth.request; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; -import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthDingTalkErrorCode; @@ -12,8 +13,6 @@ import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.UrlBuilder; -import java.util.Objects; - /** * 钉钉登录 * @@ -40,20 +39,22 @@ public class AuthDingTalkRequest extends BaseAuthRequest { // 根据timestamp, appSecret计算签名值 String stringToSign = System.currentTimeMillis() + ""; String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), stringToSign); + JSONObject param = new JSONObject(); + param.put("tmp_auth_code", code); HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config.getClientId())) - .body(Objects.requireNonNull(new JSONObject().put("tmp_auth_code", code))) + .body(param.toJSONString()) .execute(); String userInfo = response.body(); - JSONObject object = new JSONObject(userInfo); - AuthDingTalkErrorCode errorCode = AuthDingTalkErrorCode.getErrorCode(object.getInt("errcode")); + JSONObject object = JSON.parseObject(userInfo); + AuthDingTalkErrorCode errorCode = AuthDingTalkErrorCode.getErrorCode(object.getIntValue("errcode")); if (!AuthDingTalkErrorCode.EC0.equals(errorCode)) { throw new AuthException(errorCode.getDesc()); } object = object.getJSONObject("user_info"); return AuthUser.builder() - .uuid(object.getStr("openid")) - .nickname(object.getStr("nick")) - .username(object.getStr("nick")) + .uuid(object.getString("openid")) + .nickname(object.getString("nick")) + .username(object.getString("nick")) .source(AuthSource.DINGTALK) .build(); } From 56df9bc1b009957a82d0567e56f797e034bd1ece Mon Sep 17 00:00:00 2001 From: skqing <569141948@qq.com> Date: Tue, 18 Jun 2019 14:55:28 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E9=92=88=E5=AF=B9=E9=92=89=E9=92=89?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=A2=9E=E5=8A=A0AuthToken=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhyd/oauth/request/AuthDingTalkRequest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 1779545..6470c50 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -51,11 +51,15 @@ public class AuthDingTalkRequest extends BaseAuthRequest { throw new AuthException(errorCode.getDesc()); } object = object.getJSONObject("user_info"); + AuthToken token = AuthToken.builder() + .openId(object.getString("openid")) + .build(); return AuthUser.builder() - .uuid(object.getString("openid")) + .uuid(object.getString("unionid")) .nickname(object.getString("nick")) .username(object.getString("nick")) .source(AuthSource.DINGTALK) + .token(token) .build(); } } From f32c341b6306fb50ee51914ac8a6a78264f4095b Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Tue, 18 Jun 2019 19:21:05 +0800 Subject: [PATCH 03/14] =?UTF-8?q?:art:=20=E8=A7=A3=E5=86=B3Issue=20#IY2HW?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/me/zhyd/oauth/model/AuthUserGender.java | 2 +- src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java | 2 ++ .../java/me/zhyd/oauth/request/AuthDingTalkRequest.java | 6 ++---- src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java | 6 ++---- src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java | 2 ++ src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java | 2 ++ src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java | 2 ++ .../java/me/zhyd/oauth/request/AuthLinkedinRequest.java | 6 ++---- src/main/java/me/zhyd/oauth/request/AuthMiRequest.java | 6 ++---- .../java/me/zhyd/oauth/request/AuthMicrosoftRequest.java | 6 ++---- 10 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/model/AuthUserGender.java b/src/main/java/me/zhyd/oauth/model/AuthUserGender.java index b5dbd05..910a66a 100644 --- a/src/main/java/me/zhyd/oauth/model/AuthUserGender.java +++ b/src/main/java/me/zhyd/oauth/model/AuthUserGender.java @@ -10,7 +10,7 @@ import java.util.Arrays; * @since 1.8 */ public enum AuthUserGender { - MALE(1, "男"), FEMALE(0, "女"), UNKNOW(-1, ""); + MALE(1, "男"), FEMALE(0, "女"), UNKNOW(-1, "未知"); private int code; private String desc; diff --git a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java index e7ea57b..b334231 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java @@ -8,6 +8,7 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -49,6 +50,7 @@ public class AuthCsdnRequest extends BaseAuthRequest { .username(object.getString("username")) .remark(object.getString("description")) .blog(object.getString("website")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.CSDN) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 6470c50..7574a98 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthDingTalkErrorCode; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.UrlBuilder; @@ -58,6 +55,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest { .uuid(object.getString("unionid")) .nickname(object.getString("nick")) .username(object.getString("nick")) + .gender(AuthUserGender.UNKNOW) .source(AuthSource.DINGTALK) .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 06ddaa5..69754e5 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -5,10 +5,7 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; @@ -45,6 +42,7 @@ public class AuthDouyinRequest extends BaseAuthRequest { .username(userInfoObject.getString("nickname")) .nickname(userInfoObject.getString("nickname")) .avatar(userInfoObject.getString("avatar")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.DOUYIN) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java index 9d6045c..1f39962 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java @@ -8,6 +8,7 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -52,6 +53,7 @@ public class AuthGiteeRequest extends BaseAuthRequest { .location(object.getString("address")) .email(object.getString("email")) .remark(object.getString("bio")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.GITEE) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java index 67afd37..df7c015 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java @@ -8,6 +8,7 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.UrlBuilder; @@ -55,6 +56,7 @@ public class AuthGithubRequest extends BaseAuthRequest { .location(object.getString("location")) .email(object.getString("email")) .remark(object.getString("bio")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.GITHUB) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java index f01d3f2..fa4527b 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java @@ -8,6 +8,7 @@ import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -57,6 +58,7 @@ public class AuthGoogleRequest extends BaseAuthRequest { .nickname(object.getString("name")) .location(object.getString("locale")) .email(object.getString("email")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.GOOGLE) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java index d884957..e3bb69a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java @@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; @@ -81,6 +78,7 @@ public class AuthLinkedinRequest extends BaseAuthRequest { .avatar(avatar) .email(email) .token(authToken) + .gender(AuthUserGender.UNKNOW) .source(AuthSource.LINKEDIN) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java index e86c2f0..222729a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java @@ -6,10 +6,7 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; import java.text.MessageFormat; @@ -74,6 +71,7 @@ public class AuthMiRequest extends BaseAuthRequest { .nickname(user.getString("miliaoNick")) .avatar(user.getString("miliaoIcon")) .email(user.getString("mail")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.MI) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java index dc8801e..83300b1 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java @@ -6,10 +6,7 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; import java.util.HashMap; @@ -85,6 +82,7 @@ public class AuthMicrosoftRequest extends BaseAuthRequest { .nickname(object.getString("displayName")) .location(object.getString("officeLocation")) .email(object.getString("mail")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.MICROSOFT) .build(); From c0dd700b0aaa396a51bb5e416073e57b1e425200 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Tue, 18 Jun 2019 19:27:11 +0800 Subject: [PATCH 04/14] =?UTF-8?q?:art:=20=E8=A7=A3=E5=86=B3Issue=20#IY2OH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java | 5 ++++- src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java | 1 + src/main/java/me/zhyd/oauth/request/AuthQqRequest.java | 4 +++- src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java | 4 +++- update.md | 4 ++++ 6 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index dfca999..f411c40 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.zhyd.oauth JustAuth - 1.6.0-beta + 1.6.1-beta JustAuth https://gitee.com/yadong.zhang/JustAuth diff --git a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java index 4e2e952..521cdd4 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java @@ -67,14 +67,17 @@ public class AuthAlipayRequest extends BaseAuthRequest { if (!response.isSuccess()) { throw new AuthException(response.getSubMsg()); } + String province = response.getProvince(), city = response.getCity(); + String location = String.format("%s %s", StringUtils.isEmpty(province) ? "" : province, StringUtils.isEmpty(city) ? "" : city); + return AuthUser.builder() .uuid(response.getUserId()) .username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName()) .nickname(response.getNickName()) .avatar(response.getAvatar()) - .location(String.format("%s %s", StringUtils.isEmpty(province) ? "" : province, StringUtils.isEmpty(city) ? "" : city)) + .location(location) .gender(AuthUserGender.getRealGender(response.getGender())) .token(authToken) .source(AuthSource.ALIPAY) diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java index 4dab0e0..08f397a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java @@ -45,6 +45,7 @@ public class AuthCodingRequest extends BaseAuthRequest { if (object.getIntValue("code") != 0) { throw new AuthException(object.getString("msg")); } + object = object.getJSONObject("data"); return AuthUser.builder() .uuid(object.getString("id")) diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index a7c0408..868e56e 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -59,11 +59,13 @@ public class AuthQqRequest extends BaseAuthRequest { if (StringUtils.isEmpty(avatar)) { avatar = object.getString("figureurl_qq_1"); } + + String location = String.format("%s-%s", object.getString("province"), object.getString("city")); return AuthUser.builder() .username(object.getString("nickname")) .nickname(object.getString("nickname")) .avatar(avatar) - .location(object.getString("province") + "-" + object.getString("city")) + .location(location) .uuid(openId) .gender(AuthUserGender.getRealGender(object.getString("gender"))) .token(authToken) diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java index 5e85674..6dd4d31 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java @@ -42,11 +42,12 @@ public class AuthWeChatRequest extends BaseAuthRequest { this.checkResponse(object); + String location = String.format("%s-%s-%s", object.getString("country"), object.getString("province"), object.getString("city")); return AuthUser.builder() .username(object.getString("nickname")) .nickname(object.getString("nickname")) .avatar(object.getString("headimgurl")) - .location(object.getString("country") + "-" + object.getString("province") + "-" + object.getString("city")) + .location(location) .uuid(openId) .gender(AuthUserGender.getRealGender(object.getString("sex"))) .token(authToken) @@ -73,6 +74,7 @@ public class AuthWeChatRequest extends BaseAuthRequest { throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); } } + /** * 获取token,适用于获取access_token和刷新token * diff --git a/update.md b/update.md index 7c85527..c9966bc 100644 --- a/update.md +++ b/update.md @@ -1,3 +1,7 @@ +### 2019/06/18 +1. 解决Issue [#IY2HW](https://gitee.com/yadong.zhang/JustAuth/issues/IY2HW) +1. 解决Issue [#IY2OH](https://gitee.com/yadong.zhang/JustAuth/issues/IY2OH) + ### 2019/06/06 1. 增加今日头条的授权登陆 2. 发布1.6.0-beta版本,今日头条开发者暂时不能认证, 所以无法做测试,等测试通过后,正式发布release版本 From 42ede32fc5d5a5e17e9517efa9fc0c798a69072d Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Tue, 18 Jun 2019 19:51:53 +0800 Subject: [PATCH 05/14] =?UTF-8?q?:beers:=20=E9=86=89=E9=85=92=E5=86=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/me/zhyd/oauth/model/AuthToken.java | 1 + .../java/me/zhyd/oauth/request/AuthQqRequest.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/model/AuthToken.java b/src/main/java/me/zhyd/oauth/model/AuthToken.java index 96f1d2c..37dcfd4 100644 --- a/src/main/java/me/zhyd/oauth/model/AuthToken.java +++ b/src/main/java/me/zhyd/oauth/model/AuthToken.java @@ -19,6 +19,7 @@ public class AuthToken { private String uid; private String openId; private String accessCode; + private String unionId; /** * Google附带属性 diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index 868e56e..bdbe341 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -48,7 +48,7 @@ public class AuthQqRequest extends BaseAuthRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { String accessToken = authToken.getAccessToken(); - String openId = this.getOpenId(accessToken); + String openId = this.getOpenId(authToken); HttpResponse response = HttpRequest.get(UrlBuilder.getQqUserInfoUrl(config.getClientId(), accessToken, openId)) .execute(); JSONObject object = JSONObject.parseObject(response.body()); @@ -73,7 +73,8 @@ public class AuthQqRequest extends BaseAuthRequest { .build(); } - private String getOpenId(String accessToken) { + private String getOpenId(AuthToken authToken) { + String accessToken = authToken.getAccessToken(); HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)) .execute(); if (response.isOk()) { @@ -82,10 +83,12 @@ public class AuthQqRequest extends BaseAuthRequest { String removeSuffix = StrUtil.replace(removePrefix, ");", ""); String openId = StrUtil.trim(removeSuffix); JSONObject object = JSONObject.parseObject(openId); - if (object.containsKey("openid")) { - return object.getString("openid"); + if (object.containsKey("error")) { + throw new AuthException(object.get("error") + ":" + object.get("error_description")); } - throw new AuthException("Invalid openId"); + authToken.setOpenId(object.getString("openid")); + authToken.setUnionId(object.getString("unionid")); + return authToken.getOpenId(); } throw new AuthException("Invalid openId"); } From e534a4b62ee8e5f1ee9e90368301ec031efbb934 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Tue, 18 Jun 2019 19:56:00 +0800 Subject: [PATCH 06/14] =?UTF-8?q?:beers:=20=E8=A7=A3=E5=86=B3Issue=20#IY2F?= =?UTF-8?q?V?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 7574a98..3465b26 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -50,6 +50,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest { object = object.getJSONObject("user_info"); AuthToken token = AuthToken.builder() .openId(object.getString("openid")) + .unionId(object.getString("unionid")) .build(); return AuthUser.builder() .uuid(object.getString("unionid")) From dcf5f30e61363b957dc972f5ad77d5489b0ef98d Mon Sep 17 00:00:00 2001 From: skqing <569141948@qq.com> Date: Wed, 19 Jun 2019 09:51:43 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=A5=E4=B8=8B?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9A=20QQ=E7=99=BB=E5=BD=95=E6=9C=AA?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=9C=9F=E6=AD=A3=E7=9A=84uuid=20=E9=83=A8?= =?UTF-8?q?=E5=88=86Request=E5=B0=81=E8=A3=85AuthUser=E6=97=B6=E7=BC=BA?= =?UTF-8?q?=E5=B0=91gender=E5=B1=9E=E6=80=A7=20location=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=96=B9=E5=BC=8F=E4=B8=8D=E4=B8=80=E8=87=B4?= =?UTF-8?q?=20=E9=92=89=E9=92=89=E7=99=BB=E5=BD=95=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=BF=BD=E7=95=A5=E4=BA=86?= =?UTF-8?q?openid=20=E9=92=89=E9=92=89=E7=99=BB=E5=BD=95=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=8A=A5=E9=94=99=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhyd/oauth/request/AuthAlipayRequest.java | 6 +++- .../oauth/request/AuthDingTalkRequest.java | 6 ++-- .../zhyd/oauth/request/AuthDouyinRequest.java | 6 ++-- .../me/zhyd/oauth/request/AuthMiRequest.java | 6 ++-- .../me/zhyd/oauth/request/AuthQqRequest.java | 31 ++++++++++++++----- .../java/me/zhyd/oauth/utils/UrlBuilder.java | 2 +- 6 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java index 4e2e952..a1ed068 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java @@ -69,12 +69,16 @@ public class AuthAlipayRequest extends BaseAuthRequest { } String province = response.getProvince(), city = response.getCity(); + String location = province; + if (!StringUtils.isEmpty(city)) { + location = location + "-"+city; + } return AuthUser.builder() .uuid(response.getUserId()) .username(StringUtils.isEmpty(response.getUserName()) ? response.getNickName() : response.getUserName()) .nickname(response.getNickName()) .avatar(response.getAvatar()) - .location(String.format("%s %s", StringUtils.isEmpty(province) ? "" : province, StringUtils.isEmpty(city) ? "" : city)) + .location(location) .gender(AuthUserGender.getRealGender(response.getGender())) .token(authToken) .source(AuthSource.ALIPAY) diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 6470c50..7574a98 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthDingTalkErrorCode; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.UrlBuilder; @@ -58,6 +55,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest { .uuid(object.getString("unionid")) .nickname(object.getString("nick")) .username(object.getString("nick")) + .gender(AuthUserGender.UNKNOW) .source(AuthSource.DINGTALK) .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 06ddaa5..69754e5 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -5,10 +5,7 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; @@ -45,6 +42,7 @@ public class AuthDouyinRequest extends BaseAuthRequest { .username(userInfoObject.getString("nickname")) .nickname(userInfoObject.getString("nickname")) .avatar(userInfoObject.getString("avatar")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.DOUYIN) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java index e86c2f0..222729a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java @@ -6,10 +6,7 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; import java.text.MessageFormat; @@ -74,6 +71,7 @@ public class AuthMiRequest extends BaseAuthRequest { .nickname(user.getString("miliaoNick")) .avatar(user.getString("miliaoIcon")) .email(user.getString("mail")) + .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.MI) .build(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index a7c0408..d043404 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -48,8 +48,15 @@ public class AuthQqRequest extends BaseAuthRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { String accessToken = authToken.getAccessToken(); - String openId = this.getOpenId(accessToken); - HttpResponse response = HttpRequest.get(UrlBuilder.getQqUserInfoUrl(config.getClientId(), accessToken, openId)) + String openIdStr = this.getOpenId(accessToken); + String[] openIdArr = openIdStr.split("\\|"); + authToken.setOpenId(openIdArr[0]); + String uuid = authToken.getOpenId(); + if (openIdArr.length == 2) { + uuid = openIdArr[1]; + } + + HttpResponse response = HttpRequest.get(UrlBuilder.getQqUserInfoUrl(config.getClientId(), accessToken, authToken.getOpenId())) .execute(); JSONObject object = JSONObject.parseObject(response.body()); if (object.getIntValue("ret") != 0) { @@ -64,7 +71,7 @@ public class AuthQqRequest extends BaseAuthRequest { .nickname(object.getString("nickname")) .avatar(avatar) .location(object.getString("province") + "-" + object.getString("city")) - .uuid(openId) + .uuid(uuid) .gender(AuthUserGender.getRealGender(object.getString("gender"))) .token(authToken) .source(AuthSource.QQ) @@ -78,13 +85,21 @@ public class AuthQqRequest extends BaseAuthRequest { String body = response.body(); String removePrefix = StrUtil.replace(body, "callback(", ""); String removeSuffix = StrUtil.replace(removePrefix, ");", ""); - String openId = StrUtil.trim(removeSuffix); - JSONObject object = JSONObject.parseObject(openId); + String jsonStr = StrUtil.trim(removeSuffix); + JSONObject object = JSONObject.parseObject(jsonStr); + StringBuffer sb = new StringBuffer(); if (object.containsKey("openid")) { - return object.getString("openid"); + sb.append(object.getString("openid")); + sb.append("|"); + } else { + throw new AuthException("Invalid openId"); } - throw new AuthException("Invalid openId"); + if (object.containsKey("unionid")) { + sb.append(object.getString("unionid")); + } + return sb.toString(); } - throw new AuthException("Invalid openId"); + + throw new AuthException("request error"); } } diff --git a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java index a6bebde..db66917 100644 --- a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java +++ b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java @@ -58,7 +58,7 @@ public class UrlBuilder { private static final String QQ_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}"; private static final String QQ_USER_INFO_PATTERN = "{0}?oauth_consumer_key={1}&access_token={2}&openid={3}"; private static final String QQ_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&state={3}"; - private static final String QQ_OPENID_PATTERN = "{0}?access_token={1}"; + private static final String QQ_OPENID_PATTERN = "{0}?access_token={1}&unionid=1"; private static final String WECHAT_AUTHORIZE_PATTERN = "{0}?appid={1}&redirect_uri={2}&response_type=code&scope=snsapi_login&state={3}#wechat_redirect"; private static final String WECHAT_ACCESS_TOKEN_PATTERN = "{0}?appid={1}&secret={2}&code={3}&grant_type=authorization_code"; From f5de7f93b5a6f0beb9eb55c5a84fd241bc9fdb32 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Wed, 19 Jun 2019 09:56:28 +0800 Subject: [PATCH 08/14] =?UTF-8?q?:beers:=20=E8=A7=A3=E5=86=B3Issue=20#IY1Q?= =?UTF-8?q?R=20=E5=A2=9E=E5=8A=A0=E5=AF=B9Config=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E6=A0=A1=E9=AA=8C=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E6=A0=A1=E9=AA=8Credirect=20uri=E7=9A=84=E5=90=88?= =?UTF-8?q?=E6=B3=95=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/AuthorizationFactory.java | 2 +- .../zhyd/oauth/request/BaseAuthRequest.java | 4 ++- .../me/zhyd/oauth/request/ResponseStatus.java | 1 + .../zhyd/oauth/utils/AuthConfigChecker.java | 28 +++++++++++++++++-- .../me/zhyd/oauth/utils/GlobalAuthUtil.java | 14 ++++++++++ update.md | 5 +++- 6 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java b/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java index c95cdc9..9a5cc3e 100644 --- a/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java +++ b/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java @@ -10,7 +10,7 @@ import java.util.Map; /** * 授权工厂类,负责创建指定平台的授权类获取授权地址 *

- * 使用策略模式 + 工厂模式 避免大量的if else(swatch)操作 + * 使用策略模式 + 工厂模式 避免大量的if else(switch)操作 * * @author yadong.zhang (yadong.zhang0415(a)gmail.com) * @version 1.0 diff --git a/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java b/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java index 6a418f1..b0f6f82 100644 --- a/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java +++ b/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java @@ -23,9 +23,11 @@ public abstract class BaseAuthRequest implements AuthRequest { public BaseAuthRequest(AuthConfig config, AuthSource source) { this.config = config; this.source = source; - if (!AuthConfigChecker.isSupportedAuth(config)) { + if (!AuthConfigChecker.isSupportedAuth(config, source)) { throw new AuthException(ResponseStatus.PARAMETER_INCOMPLETE); } + // 校验配置合法性 + AuthConfigChecker.check(config, source); } protected abstract AuthToken getAccessToken(String code); diff --git a/src/main/java/me/zhyd/oauth/request/ResponseStatus.java b/src/main/java/me/zhyd/oauth/request/ResponseStatus.java index 378669b..41052ab 100644 --- a/src/main/java/me/zhyd/oauth/request/ResponseStatus.java +++ b/src/main/java/me/zhyd/oauth/request/ResponseStatus.java @@ -13,6 +13,7 @@ public enum ResponseStatus { UNSUPPORTED(5003, "Unsupported operation"), NO_AUTH_SOURCE(5004, "AuthSource cannot be null"), UNIDENTIFIED_PLATFORM(5005, "Unidentified platform"), + ILLEGAL_REDIRECT_URI(5006, "Illegal redirect uri"), ; private int code; diff --git a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java index ca58d14..ca2d425 100644 --- a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java +++ b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java @@ -1,6 +1,9 @@ package me.zhyd.oauth.utils; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.exception.AuthException; +import me.zhyd.oauth.model.AuthSource; +import me.zhyd.oauth.request.ResponseStatus; /** * 授权配置类的校验器 @@ -15,9 +18,30 @@ public class AuthConfigChecker { * 是否支持第三方登录 * * @param config config + * @param source source * @return true or false */ - public static boolean isSupportedAuth(AuthConfig config) { - return StringUtils.isNotEmpty(config.getClientId()) && StringUtils.isNotEmpty(config.getClientSecret()) && StringUtils.isNotEmpty(config.getRedirectUri()); + public static boolean isSupportedAuth(AuthConfig config, AuthSource source) { + boolean isSupported = StringUtils.isNotEmpty(config.getClientId()) && StringUtils.isNotEmpty(config.getClientSecret()) && StringUtils.isNotEmpty(config.getRedirectUri()); + if (isSupported && AuthSource.ALIPAY == source) { + isSupported = StringUtils.isNotEmpty(config.getAlipayPublicKey()); + } + return isSupported; + } + + /** + * 检查配置合法性。针对部分平台, 对redirect uri有特定要求。一般来说redirect uri都是http://,而对于facebook平台, redirect uri 必须是https的链接 + * + * @param config config + * @param source source + */ + public static void check(AuthConfig config, AuthSource source) { + String redirectUri = config.getRedirectUri(); + if (!GlobalAuthUtil.isHttpProtocol(redirectUri) && !GlobalAuthUtil.isHttpsProtocol(redirectUri)) { + throw new AuthException(ResponseStatus.ILLEGAL_REDIRECT_URI); + } + if (AuthSource.FACEBOOK == source && !GlobalAuthUtil.isHttpsProtocol(redirectUri)) { + throw new AuthException(ResponseStatus.ILLEGAL_REDIRECT_URI); + } } } diff --git a/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java b/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java index 5bf022e..5bf697d 100644 --- a/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java +++ b/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java @@ -84,4 +84,18 @@ public class GlobalAuthUtil { } return res; } + + public static boolean isHttpProtocol(String url) { + if (StringUtils.isEmpty(url)) { + return false; + } + return url.startsWith("http://"); + } + + public static boolean isHttpsProtocol(String url) { + if (StringUtils.isEmpty(url)) { + return false; + } + return url.startsWith("https://"); + } } diff --git a/update.md b/update.md index c9966bc..7e27d0e 100644 --- a/update.md +++ b/update.md @@ -1,6 +1,9 @@ ### 2019/06/18 1. 解决Issue [#IY2HW](https://gitee.com/yadong.zhang/JustAuth/issues/IY2HW) -1. 解决Issue [#IY2OH](https://gitee.com/yadong.zhang/JustAuth/issues/IY2OH) +2. 解决Issue [#IY2OH](https://gitee.com/yadong.zhang/JustAuth/issues/IY2OH) +3. 解决Issue [#IY2FV](https://gitee.com/yadong.zhang/JustAuth/issues/IY2FV) +4. 修复部分注释、拼写错误 +5. 解决Issue [#IY1QR](https://gitee.com/yadong.zhang/JustAuth/issues/IY1QR) 增加对Config属性的校验功能,主要校验redirect uri的合法性 ### 2019/06/06 1. 增加今日头条的授权登陆 From 67579bfb076d119e5fd5a7e93c5bcd74dd4f2ba6 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Wed, 19 Jun 2019 10:06:15 +0800 Subject: [PATCH 09/14] =?UTF-8?q?:beers:=20qq=E7=99=BB=E5=BD=95=E6=97=B6?= =?UTF-8?q?=E6=A0=B9=E6=8D=AEopenid=E5=92=8Cunionid=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=90=88=E9=80=82=E7=9A=84=E5=80=BC=E4=BD=9C=E4=B8=BAuuid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/me/zhyd/oauth/request/AuthQqRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index 00b35f7..e205e32 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -88,7 +88,7 @@ public class AuthQqRequest extends BaseAuthRequest { } authToken.setOpenId(object.getString("openid")); authToken.setUnionId(object.getString("unionid")); - return authToken.getOpenId(); + return StringUtils.isEmpty(authToken.getUnionId()) ? authToken.getOpenId() : authToken.getUnionId(); } throw new AuthException("request error"); From 25424023c4b4c0b6bebd8748f0d69d400166ee47 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Wed, 19 Jun 2019 10:10:20 +0800 Subject: [PATCH 10/14] =?UTF-8?q?:twisted=5Frightwards=5Farrows:=20?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update.md | 1 + 1 file changed, 1 insertion(+) diff --git a/update.md b/update.md index 7e27d0e..0b58011 100644 --- a/update.md +++ b/update.md @@ -4,6 +4,7 @@ 3. 解决Issue [#IY2FV](https://gitee.com/yadong.zhang/JustAuth/issues/IY2FV) 4. 修复部分注释、拼写错误 5. 解决Issue [#IY1QR](https://gitee.com/yadong.zhang/JustAuth/issues/IY1QR) 增加对Config属性的校验功能,主要校验redirect uri的合法性 +6. 合并[skqing](https://gitee.com/skqing)提交的[PR](https://gitee.com/yadong.zhang/JustAuth/pulls/2) ### 2019/06/06 1. 增加今日头条的授权登陆 From 65daa0592a2e257837cd320ee962a1af638fb10b Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Wed, 19 Jun 2019 16:48:09 +0800 Subject: [PATCH 11/14] =?UTF-8?q?:ambulance:=20=E5=A2=9E=E5=8A=A0alipay?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E5=8F=82=E6=95=B0=E7=9A=84=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhyd/oauth/request/AuthDingTalkRequest.java | 6 +++--- src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java | 5 +++++ src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java | 9 +++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 3465b26..d4c2368 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -34,11 +34,11 @@ public class AuthDingTalkRequest extends BaseAuthRequest { protected AuthUser getUserInfo(AuthToken authToken) { String code = authToken.getAccessCode(); // 根据timestamp, appSecret计算签名值 - String stringToSign = System.currentTimeMillis() + ""; - String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), stringToSign); + String timestamp = System.currentTimeMillis() + ""; + String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), timestamp); JSONObject param = new JSONObject(); param.put("tmp_auth_code", code); - HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config.getClientId())) + HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, timestamp, config.getClientId())) .body(param.toJSONString()) .execute(); String userInfo = response.body(); diff --git a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java index ca2d425..c05b04e 100644 --- a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java +++ b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java @@ -40,8 +40,13 @@ public class AuthConfigChecker { if (!GlobalAuthUtil.isHttpProtocol(redirectUri) && !GlobalAuthUtil.isHttpsProtocol(redirectUri)) { throw new AuthException(ResponseStatus.ILLEGAL_REDIRECT_URI); } + // facebook的回调地址必须为https的链接 if (AuthSource.FACEBOOK == source && !GlobalAuthUtil.isHttpsProtocol(redirectUri)) { throw new AuthException(ResponseStatus.ILLEGAL_REDIRECT_URI); } + // 支付宝在创建回调地址时,不允许使用localhost或者127.0.0.1 + if (AuthSource.ALIPAY == source && GlobalAuthUtil.isLocalHost(redirectUri)) { + throw new AuthException(ResponseStatus.ILLEGAL_REDIRECT_URI); + } } } diff --git a/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java b/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java index 5bf697d..245f11a 100644 --- a/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java +++ b/src/main/java/me/zhyd/oauth/utils/GlobalAuthUtil.java @@ -25,9 +25,9 @@ public class GlobalAuthUtil { private static final String DEFAULT_ENCODING = "UTF-8"; private static final String ALGORITHM = "HmacSHA256"; - public static String generateDingTalkSignature(String canonicalString, String secret) { + public static String generateDingTalkSignature(String secretKey, String timestamp) { try { - byte[] signData = sign(canonicalString.getBytes(DEFAULT_ENCODING), secret.getBytes(DEFAULT_ENCODING)); + byte[] signData = sign(secretKey.getBytes(DEFAULT_ENCODING), timestamp.getBytes(DEFAULT_ENCODING)); return urlEncode(new String(Base64.encode(signData, false))); } catch (UnsupportedEncodingException ex) { throw new AuthException("Unsupported algorithm: " + DEFAULT_ENCODING, ex); @@ -98,4 +98,9 @@ public class GlobalAuthUtil { } return url.startsWith("https://"); } + + public static boolean isLocalHost(String url) { + return StringUtils.isEmpty(url) || url.contains("127.0.0.1") || url.contains("localhost"); + } + } From 7ace410351315cb9efbaa048805aff2981d284de Mon Sep 17 00:00:00 2001 From: skqing <569141948@qq.com> Date: Wed, 19 Jun 2019 17:14:14 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=97=AE=E9=A2=98=EF=BC=9A=201.=E6=8A=96?= =?UTF-8?q?=E9=9F=B3=E7=9A=84client=5Fid=E6=8D=A2=E6=88=90client=5Fkey?= =?UTF-8?q?=E4=BA=86=202.=E6=8A=96=E9=9F=B3=E7=9A=84=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=90=8E=E9=9D=A2=E5=BF=85=E9=A1=BB=E5=8A=A0=E4=B8=8A/?= =?UTF-8?q?=E5=90=A6=E5=88=99=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/me/zhyd/oauth/consts/ApiUrl.java | 4 ++-- .../java/me/zhyd/oauth/request/AuthDingTalkRequest.java | 3 ++- src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java | 6 ++++-- src/main/java/me/zhyd/oauth/utils/UrlBuilder.java | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/me/zhyd/oauth/consts/ApiUrl.java b/src/main/java/me/zhyd/oauth/consts/ApiUrl.java index 894bc83..7e24357 100644 --- a/src/main/java/me/zhyd/oauth/consts/ApiUrl.java +++ b/src/main/java/me/zhyd/oauth/consts/ApiUrl.java @@ -457,12 +457,12 @@ public enum ApiUrl { @Override public String accessToken() { - return "https://open.douyin.com/oauth/access_token"; + return "https://open.douyin.com/oauth/access_token/"; } @Override public String userInfo() { - return "https://open.douyin.com/oauth/userinfo"; + return "https://open.douyin.com/oauth/userinfo/"; } @Override diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index 7574a98..5954467 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -36,9 +36,10 @@ public class AuthDingTalkRequest extends BaseAuthRequest { // 根据timestamp, appSecret计算签名值 String stringToSign = System.currentTimeMillis() + ""; String urlEncodeSignature = GlobalAuthUtil.generateDingTalkSignature(config.getClientSecret(), stringToSign); + String url = UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config.getClientId()); JSONObject param = new JSONObject(); param.put("tmp_auth_code", code); - HttpResponse response = HttpRequest.post(UrlBuilder.getDingTalkUserInfoUrl(urlEncodeSignature, stringToSign, config.getClientId())) + HttpResponse response = HttpRequest.post(url) .body(param.toJSONString()) .execute(); String userInfo = response.body(); diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java index 69754e5..876a3de 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -32,16 +32,18 @@ public class AuthDouyinRequest extends BaseAuthRequest { protected AuthUser getUserInfo(AuthToken authToken) { String accessToken = authToken.getAccessToken(); String openId = authToken.getOpenId(); - HttpResponse response = HttpRequest.get(UrlBuilder.getDouyinUserInfoUrl(accessToken, openId)).execute(); + String url = UrlBuilder.getDouyinUserInfoUrl(accessToken, openId); + HttpResponse response = HttpRequest.get(url).execute(); JSONObject object = JSONObject.parseObject(response.body()); JSONObject userInfoObject = this.checkResponse(object); return AuthUser.builder() - .uuid(userInfoObject.getString("open_id")) + .uuid(userInfoObject.getString("union_id")) .username(userInfoObject.getString("nickname")) .nickname(userInfoObject.getString("nickname")) .avatar(userInfoObject.getString("avatar")) + .remark(userInfoObject.getString("description")) .gender(AuthUserGender.UNKNOW) .token(authToken) .source(AuthSource.DOUYIN) diff --git a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java index db66917..d3c7ce5 100644 --- a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java +++ b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java @@ -73,7 +73,7 @@ public class UrlBuilder { private static final String FACEBOOK_USER_INFO_PATTERN = "{0}?access_token={1}&fields=id,name,birthday,gender,hometown,email,devices,picture.width(400)"; private static final String DOUYIN_AUTHORIZE_PATTERN = "{0}?client_key={1}&redirect_uri={2}&state={3}&response_type=code&scope=user_info"; - private static final String DOUYIN_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&code={3}&grant_type=authorization_code"; + private static final String DOUYIN_ACCESS_TOKEN_PATTERN = "{0}?client_key={1}&client_secret={2}&code={3}&grant_type=authorization_code"; private static final String DOUYIN_USER_INFO_PATTERN = "{0}?access_token={1}&open_id={2}"; private static final String DOUYIN_REFRESH_TOKEN_PATTERN = "{0}?client_key={1}&refresh_token={2}&grant_type=refresh_token"; From cf74f811fafd1293f026a5535fe6e15022e1d91a Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Wed, 19 Jun 2019 20:01:03 +0800 Subject: [PATCH 13/14] =?UTF-8?q?:memo:=20=E7=BC=96=E5=86=99=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6e8db55..735a2a4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

- + @@ -64,7 +64,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具 me.zhyd.oauth JustAuth - 1.6.0-beta + 1.6.1-beta ``` - 调用api From 2f88c23405ea89206e0669fe72c3ff4b3167d699 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Thu, 20 Jun 2019 10:10:18 +0800 Subject: [PATCH 14/14] =?UTF-8?q?:twisted=5Frightwards=5Farrows:=20?= =?UTF-8?q?=E5=90=88=E5=B9=B6github=E4=B8=AD=E7=9A=84pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- pom.xml | 2 +- .../authorization/AlipayAuthorization.java | 19 -- .../oauth/authorization/Authorization.java | 21 -- .../authorization/AuthorizationFactory.java | 81 -------- .../authorization/BaiduAuthorization.java | 19 -- .../authorization/CodingAuthorization.java | 19 -- .../authorization/CsdnAuthorization.java | 19 -- .../authorization/DingTalkAuthorization.java | 19 -- .../authorization/DouyinAuthorization.java | 19 -- .../authorization/FacebookAuthorization.java | 19 -- .../authorization/GiteeAuthorization.java | 19 -- .../authorization/GithubAuthorization.java | 19 -- .../authorization/GoogleAuthorization.java | 19 -- .../authorization/LinkedinAuthorization.java | 19 -- .../oauth/authorization/MiAuthorization.java | 19 -- .../authorization/MicrosoftAuthorization.java | 19 -- .../authorization/OschinaAuthorization.java | 19 -- .../oauth/authorization/QqAuthorization.java | 19 -- .../authorization/TaobaoAuthorization.java | 19 -- .../TencentCloudAuthorization.java | 19 -- .../authorization/ToutiaoAuthorization.java | 19 -- .../authorization/WeChatAuthorization.java | 19 -- .../authorization/WeiboAuthorization.java | 19 -- .../ApiUrl.java => config/AuthSource.java} | 186 +----------------- .../java/me/zhyd/oauth/model/AuthSource.java | 31 --- .../java/me/zhyd/oauth/model/AuthUser.java | 1 + .../zhyd/oauth/request/AuthAlipayRequest.java | 17 +- .../zhyd/oauth/request/AuthBaiduRequest.java | 21 +- .../zhyd/oauth/request/AuthCodingRequest.java | 16 +- .../zhyd/oauth/request/AuthCsdnRequest.java | 19 +- .../oauth/request/AuthDingTalkRequest.java | 20 +- .../zhyd/oauth/request/AuthDouyinRequest.java | 16 +- .../oauth/request/AuthFacebookRequest.java | 15 +- .../zhyd/oauth/request/AuthGiteeRequest.java | 19 +- .../zhyd/oauth/request/AuthGithubRequest.java | 19 +- .../zhyd/oauth/request/AuthGoogleRequest.java | 12 +- .../oauth/request/AuthLinkedinRequest.java | 30 ++- .../me/zhyd/oauth/request/AuthMiRequest.java | 16 +- .../oauth/request/AuthMicrosoftRequest.java | 16 +- .../oauth/request/AuthOschinaRequest.java | 19 +- .../me/zhyd/oauth/request/AuthQqRequest.java | 12 +- .../zhyd/oauth/request/AuthTaobaoRequest.java | 19 +- .../request/AuthTencentCloudRequest.java | 16 +- .../oauth/request/AuthToutiaoRequest.java | 16 +- .../zhyd/oauth/request/AuthWeChatRequest.java | 16 +- .../zhyd/oauth/request/AuthWeiboRequest.java | 15 +- .../zhyd/oauth/request/BaseAuthRequest.java | 12 +- .../zhyd/oauth/utils/AuthConfigChecker.java | 2 +- .../java/me/zhyd/oauth/utils/UrlBuilder.java | 131 ++++++------ update.md | 7 +- 51 files changed, 381 insertions(+), 824 deletions(-) delete mode 100644 src/main/java/me/zhyd/oauth/authorization/AlipayAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/Authorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/BaiduAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/CodingAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/CsdnAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/DingTalkAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/DouyinAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/FacebookAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/GiteeAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/GithubAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/GoogleAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/LinkedinAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/MiAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/MicrosoftAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/OschinaAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/QqAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/TaobaoAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/TencentCloudAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/ToutiaoAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/WeChatAuthorization.java delete mode 100644 src/main/java/me/zhyd/oauth/authorization/WeiboAuthorization.java rename src/main/java/me/zhyd/oauth/{consts/ApiUrl.java => config/AuthSource.java} (69%) delete mode 100644 src/main/java/me/zhyd/oauth/model/AuthSource.java diff --git a/README.md b/README.md index 735a2a4..164c51d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

- + diff --git a/pom.xml b/pom.xml index f411c40..4cacc20 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.zhyd.oauth JustAuth - 1.6.1-beta + 1.7.0 JustAuth https://gitee.com/yadong.zhang/JustAuth diff --git a/src/main/java/me/zhyd/oauth/authorization/AlipayAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/AlipayAuthorization.java deleted file mode 100644 index c5655fe..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/AlipayAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 支付宝授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class AlipayAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getAlipayAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/Authorization.java b/src/main/java/me/zhyd/oauth/authorization/Authorization.java deleted file mode 100644 index f8508c4..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/Authorization.java +++ /dev/null @@ -1,21 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; - -/** - * 授权接口,用来获取具体第三方平台的授权地址 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public interface Authorization { - - /** - * 获取授权页面地址 - * - * @param config 授权基础配置 - * @return 授权页面地址 - */ - String getAuthorizeUrl(AuthConfig config); -} diff --git a/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java b/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java deleted file mode 100644 index 9a5cc3e..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/AuthorizationFactory.java +++ /dev/null @@ -1,81 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; -import me.zhyd.oauth.request.ResponseStatus; - -import java.util.HashMap; -import java.util.Map; - -/** - * 授权工厂类,负责创建指定平台的授权类获取授权地址 - *

- * 使用策略模式 + 工厂模式 避免大量的if else(switch)操作 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class AuthorizationFactory { - - private static Map authorizationMap = new HashMap<>(); - private static boolean loader = false; - - private AuthorizationFactory() { - - } - - /** - * 根据第三方平台,获取具体的授权工具 - * - * @param source 平台 - * @return 具体的Authorization - */ - public static Authorization getAuthorize(AuthSource source) { - if (null == source) { - throw new AuthException(ResponseStatus.NO_AUTH_SOURCE); - } - registerAllAuthorize(); - - Authorization authorization = authorizationMap.get(source.toString()); - if (null == authorization) { - throw new AuthException(ResponseStatus.UNIDENTIFIED_PLATFORM); - } - return authorization; - } - - /** - * 将所有Authorize的实现类注册到authorizeMap中, - * 每次增加新的平台都需要在这儿添加注册代码 - */ - private static void registerAllAuthorize() { - if (loader) { - return; - } - AuthorizationFactory.register(AuthSource.ALIPAY, new AlipayAuthorization()); - AuthorizationFactory.register(AuthSource.BAIDU, new BaiduAuthorization()); - AuthorizationFactory.register(AuthSource.CODING, new CodingAuthorization()); - AuthorizationFactory.register(AuthSource.CSDN, new CsdnAuthorization()); - AuthorizationFactory.register(AuthSource.DINGTALK, new DingTalkAuthorization()); - AuthorizationFactory.register(AuthSource.GITEE, new GiteeAuthorization()); - AuthorizationFactory.register(AuthSource.GITHUB, new GithubAuthorization()); - AuthorizationFactory.register(AuthSource.GOOGLE, new GoogleAuthorization()); - AuthorizationFactory.register(AuthSource.OSCHINA, new OschinaAuthorization()); - AuthorizationFactory.register(AuthSource.QQ, new QqAuthorization()); - AuthorizationFactory.register(AuthSource.TAOBAO, new TaobaoAuthorization()); - AuthorizationFactory.register(AuthSource.TENCENT_CLOUD, new TencentCloudAuthorization()); - AuthorizationFactory.register(AuthSource.WECHAT, new WeChatAuthorization()); - AuthorizationFactory.register(AuthSource.WEIBO, new WeiboAuthorization()); - AuthorizationFactory.register(AuthSource.FACEBOOK, new FacebookAuthorization()); - AuthorizationFactory.register(AuthSource.DOUYIN, new DouyinAuthorization()); - AuthorizationFactory.register(AuthSource.LINKEDIN, new LinkedinAuthorization()); - AuthorizationFactory.register(AuthSource.MICROSOFT, new MicrosoftAuthorization()); - AuthorizationFactory.register(AuthSource.MI, new MiAuthorization()); - AuthorizationFactory.register(AuthSource.TOUTIAO, new ToutiaoAuthorization()); - loader = true; - } - - private static void register(AuthSource authSource, Authorization authorization) { - authorizationMap.put(authSource.toString(), authorization); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/BaiduAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/BaiduAuthorization.java deleted file mode 100644 index c7e3469..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/BaiduAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 百度授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class BaiduAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getBaiduAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/CodingAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/CodingAuthorization.java deleted file mode 100644 index dd01286..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/CodingAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * Coding授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class CodingAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getCodingAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/CsdnAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/CsdnAuthorization.java deleted file mode 100644 index cc6474c..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/CsdnAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * CSDN授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class CsdnAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getCsdnAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/DingTalkAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/DingTalkAuthorization.java deleted file mode 100644 index 4bda11e..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/DingTalkAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 钉钉授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class DingTalkAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getDingTalkQrConnectUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/DouyinAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/DouyinAuthorization.java deleted file mode 100644 index a374399..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/DouyinAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 抖音授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class DouyinAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getDouyinAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/FacebookAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/FacebookAuthorization.java deleted file mode 100644 index 7862aa5..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/FacebookAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * Facebook授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.3 - * @since 1.3 - */ -public class FacebookAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getFacebookAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/GiteeAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/GiteeAuthorization.java deleted file mode 100644 index e02a476..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/GiteeAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 码云授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class GiteeAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getGiteeAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/GithubAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/GithubAuthorization.java deleted file mode 100644 index f77ceb4..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/GithubAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * Github授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class GithubAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getGithubAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/GoogleAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/GoogleAuthorization.java deleted file mode 100644 index 6a6b318..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/GoogleAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * Google授权 - * - * @author yangkai.shen (https://xkcoding.com) - * @version 1.3 - * @since 1.3 - */ -public class GoogleAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getGoogleAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/LinkedinAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/LinkedinAuthorization.java deleted file mode 100644 index 0cb60be..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/LinkedinAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 领英授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class LinkedinAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getLinkedinAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/MiAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/MiAuthorization.java deleted file mode 100644 index 2fb0ff6..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/MiAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 小米授权 - * - * @author yangkai.shen (https://xkcoding.com) - * @version 1.5 - * @since 1.5 - */ -public class MiAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getMiAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/MicrosoftAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/MicrosoftAuthorization.java deleted file mode 100644 index 4dff724..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/MicrosoftAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 微软授权 - * - * @author yangkai.shen (https://xkcoding.com) - * @version 1.5 - * @since 1.5 - */ -public class MicrosoftAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getMicrosoftAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/OschinaAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/OschinaAuthorization.java deleted file mode 100644 index fa70aaf..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/OschinaAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 开源中国授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class OschinaAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getOschinaAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/QqAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/QqAuthorization.java deleted file mode 100644 index f900236..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/QqAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * QQ授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class QqAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getQqAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/TaobaoAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/TaobaoAuthorization.java deleted file mode 100644 index cdc8370..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/TaobaoAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 淘宝授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class TaobaoAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getTaobaoAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/TencentCloudAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/TencentCloudAuthorization.java deleted file mode 100644 index dcb94fe..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/TencentCloudAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 腾讯云授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class TencentCloudAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getTencentCloudAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/ToutiaoAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/ToutiaoAuthorization.java deleted file mode 100644 index eb110d3..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/ToutiaoAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 今日头条授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class ToutiaoAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getToutiaoAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/WeChatAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/WeChatAuthorization.java deleted file mode 100644 index a7f208a..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/WeChatAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 微信授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class WeChatAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getWeChatAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/authorization/WeiboAuthorization.java b/src/main/java/me/zhyd/oauth/authorization/WeiboAuthorization.java deleted file mode 100644 index 2083233..0000000 --- a/src/main/java/me/zhyd/oauth/authorization/WeiboAuthorization.java +++ /dev/null @@ -1,19 +0,0 @@ -package me.zhyd.oauth.authorization; - -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 微博授权 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public class WeiboAuthorization implements Authorization { - - @Override - public String getAuthorizeUrl(AuthConfig config) { - return UrlBuilder.getWeiboAuthorizeUrl(config.getClientId(), config.getRedirectUri()); - } -} diff --git a/src/main/java/me/zhyd/oauth/consts/ApiUrl.java b/src/main/java/me/zhyd/oauth/config/AuthSource.java similarity index 69% rename from src/main/java/me/zhyd/oauth/consts/ApiUrl.java rename to src/main/java/me/zhyd/oauth/config/AuthSource.java index 894bc83..14d51ea 100644 --- a/src/main/java/me/zhyd/oauth/consts/ApiUrl.java +++ b/src/main/java/me/zhyd/oauth/config/AuthSource.java @@ -1,4 +1,4 @@ -package me.zhyd.oauth.consts; +package me.zhyd.oauth.config; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.request.ResponseStatus; @@ -10,7 +10,7 @@ import me.zhyd.oauth.request.ResponseStatus; * @version 1.0 * @since 1.0 */ -public enum ApiUrl { +public enum AuthSource { /** * Github */ @@ -29,16 +29,6 @@ public enum ApiUrl { public String userInfo() { return "https://api.github.com/user"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 新浪微博 @@ -58,16 +48,6 @@ public enum ApiUrl { public String userInfo() { return "https://api.weibo.com/2/users/show.json"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * gitee @@ -87,16 +67,6 @@ public enum ApiUrl { public String userInfo() { return "https://gitee.com/api/v5/user"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 钉钉 @@ -116,16 +86,6 @@ public enum ApiUrl { public String userInfo() { return "https://oapi.dingtalk.com/sns/getuserinfo_bycode"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 百度 @@ -150,11 +110,6 @@ public enum ApiUrl { public String revoke() { return "https://openapi.baidu.com/rest/2.0/passport/auth/revokeAuthorization"; } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * csdn @@ -174,16 +129,6 @@ public enum ApiUrl { public String userInfo() { return "https://api.csdn.net/user/getinfo"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * Coding @@ -203,21 +148,11 @@ public enum ApiUrl { public String userInfo() { return "https://coding.net/api/account/current_user"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 腾讯云开发者平台(coding升级后就变成腾讯云开发者平台了) */ - TENCENTCLOUD { + TENCENT_CLOUD { @Override public String authorize() { return "https://dev.tencent.com/oauth_authorize.html"; @@ -232,16 +167,6 @@ public enum ApiUrl { public String userInfo() { return "https://dev.tencent.com/api/account/current_user"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * oschina 开源中国 @@ -261,16 +186,6 @@ public enum ApiUrl { public String userInfo() { return "https://www.oschina.net/action/openapi/user"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 支付宝 @@ -290,16 +205,6 @@ public enum ApiUrl { public String userInfo() { return "https://openapi.alipay.com/gateway.do"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * QQ @@ -319,16 +224,6 @@ public enum ApiUrl { public String userInfo() { return "https://graph.qq.com/user/get_user_info"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 微信 @@ -349,11 +244,6 @@ public enum ApiUrl { return "https://api.weixin.qq.com/sns/userinfo"; } - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - @Override public String refresh() { return "https://api.weixin.qq.com/sns/oauth2/refresh_token"; @@ -377,16 +267,6 @@ public enum ApiUrl { public String userInfo() { throw new AuthException(ResponseStatus.UNSUPPORTED); } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * Google @@ -406,16 +286,6 @@ public enum ApiUrl { public String userInfo() { return "https://oauth2.googleapis.com/tokeninfo"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * Facebook @@ -435,16 +305,6 @@ public enum ApiUrl { public String userInfo() { return "https://graph.facebook.com/v3.3/me"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }, /** * 抖音 @@ -465,11 +325,6 @@ public enum ApiUrl { return "https://open.douyin.com/oauth/userinfo"; } - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - @Override public String refresh() { return "https://open.douyin.com/oauth/refresh_token"; @@ -494,11 +349,6 @@ public enum ApiUrl { return "https://api.linkedin.com/v2/me"; } - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - @Override public String refresh() { return "https://www.linkedin.com/oauth/v2/accessToken"; @@ -523,11 +373,6 @@ public enum ApiUrl { return "https://graph.microsoft.com/v1.0/me"; } - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - @Override public String refresh() { return "https://login.microsoftonline.com/common/oauth2/v2.0/token"; @@ -552,11 +397,6 @@ public enum ApiUrl { return "https://open.account.xiaomi.com/user/profile"; } - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - @Override public String refresh() { return "https://account.xiaomi.com/oauth2/token"; @@ -580,16 +420,6 @@ public enum ApiUrl { public String userInfo() { return "https://open.snssdk.com/data/user_profile"; } - - @Override - public String revoke() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } - - @Override - public String refresh() { - throw new AuthException(ResponseStatus.UNSUPPORTED); - } }; /** @@ -618,13 +448,17 @@ public enum ApiUrl { * * @return url */ - public abstract String revoke(); + public String revoke() { + throw new AuthException(ResponseStatus.UNSUPPORTED); + } /** * 刷新授权的api * * @return url */ - public abstract String refresh(); + public String refresh() { + throw new AuthException(ResponseStatus.UNSUPPORTED); + } -} +} \ No newline at end of file diff --git a/src/main/java/me/zhyd/oauth/model/AuthSource.java b/src/main/java/me/zhyd/oauth/model/AuthSource.java deleted file mode 100644 index fa0c375..0000000 --- a/src/main/java/me/zhyd/oauth/model/AuthSource.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.zhyd.oauth.model; - -/** - * 授权来源(平台) - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @since 1.8 - */ -public enum AuthSource { - GITHUB, - GITEE, - WEIBO, - DINGTALK, - BAIDU, - CSDN, - CODING, - OSCHINA, - TENCENT_CLOUD, - ALIPAY, - TAOBAO, - QQ, - WECHAT, - GOOGLE, - FACEBOOK, - DOUYIN, - LINKEDIN, - MICROSOFT, - MI, - TOUTIAO -} diff --git a/src/main/java/me/zhyd/oauth/model/AuthUser.java b/src/main/java/me/zhyd/oauth/model/AuthUser.java index 1079574..35a5d02 100644 --- a/src/main/java/me/zhyd/oauth/model/AuthUser.java +++ b/src/main/java/me/zhyd/oauth/model/AuthUser.java @@ -2,6 +2,7 @@ package me.zhyd.oauth.model; import lombok.Builder; import lombok.Data; +import me.zhyd.oauth.config.AuthSource; /** * 授权成功后的用户信息,根据授权平台的不同,获取的数据完整性也不同 diff --git a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java index 521cdd4..db414ae 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthAlipayRequest.java @@ -8,13 +8,13 @@ import com.alipay.api.request.AlipayUserInfoShareRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.alipay.api.response.AlipayUserInfoShareResponse; import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.consts.ApiUrl; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.StringUtils; +import me.zhyd.oauth.utils.UrlBuilder; /** * 支付宝登录 @@ -29,7 +29,8 @@ public class AuthAlipayRequest extends BaseAuthRequest { public AuthAlipayRequest(AuthConfig config) { super(config, AuthSource.ALIPAY); - this.alipayClient = new DefaultAlipayClient(ApiUrl.ALIPAY.accessToken(), config.getClientId(), config.getClientSecret(), "json", "UTF-8", config.getAlipayPublicKey(), "RSA2"); + this.alipayClient = new DefaultAlipayClient(AuthSource.ALIPAY.accessToken(), config.getClientId(), config.getClientSecret(), "json", "UTF-8", config + .getAlipayPublicKey(), "RSA2"); } @Override @@ -83,4 +84,14 @@ public class AuthAlipayRequest extends BaseAuthRequest { .source(AuthSource.ALIPAY) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getAlipayAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java index 7375625..2225cac 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java @@ -3,8 +3,8 @@ package me.zhyd.oauth.request; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; @@ -24,16 +24,15 @@ public class AuthBaiduRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getBaiduAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getBaiduAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); JSONObject accessTokenObject = JSONObject.parseObject(response.body()); AuthBaiduErrorCode errorCode = AuthBaiduErrorCode.getErrorCode(accessTokenObject.getString("error")); if (!AuthBaiduErrorCode.OK.equals(errorCode)) { throw new AuthException(errorCode.getDesc()); } - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); } @Override @@ -56,13 +55,23 @@ public class AuthBaiduRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getBaiduAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + @Override public AuthResponse revoke(AuthToken authToken) { String accessToken = authToken.getAccessToken(); HttpResponse response = HttpRequest.get(UrlBuilder.getBaiduRevokeUrl(accessToken)).execute(); String userInfo = response.body(); JSONObject object = JSONObject.parseObject(userInfo); - if(object.containsKey("error_code")) { + if (object.containsKey("error_code")) { return AuthResponse.builder() .code(ResponseStatus.FAILURE.getCode()) .msg(object.getString("error_msg")) diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java index 08f397a..66f7143 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -32,9 +32,7 @@ public class AuthCodingRequest extends BaseAuthRequest { if (accessTokenObject.getIntValue("code") != 0) { throw new AuthException("Unable to get token from coding using code [" + code + "]"); } - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); } @Override @@ -62,4 +60,14 @@ public class AuthCodingRequest extends BaseAuthRequest { .source(AuthSource.CODING) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getCodingAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java index b334231..858441b 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -26,15 +26,14 @@ public class AuthCsdnRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getCsdnAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getCsdnAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); JSONObject accessTokenObject = JSONObject.parseObject(response.body()); if (accessTokenObject.containsKey("error_code")) { throw new AuthException("Unable to get token from csdn using code [" + code + "]"); } - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); } @Override @@ -55,4 +54,14 @@ public class AuthCsdnRequest extends BaseAuthRequest { .source(AuthSource.CSDN) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getCsdnAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index d4c2368..05955e1 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -5,8 +5,12 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthDingTalkErrorCode; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.GlobalAuthUtil; import me.zhyd.oauth.utils.UrlBuilder; @@ -25,9 +29,7 @@ public class AuthDingTalkRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - return AuthToken.builder() - .accessCode(code) - .build(); + return AuthToken.builder().accessCode(code).build(); } @Override @@ -61,4 +63,14 @@ public class AuthDingTalkRequest extends BaseAuthRequest { .token(token) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getDingTalkQrConnectUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java index 69754e5..c70c006 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -4,8 +4,12 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; @@ -48,6 +52,16 @@ public class AuthDouyinRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getDouyinAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + @Override public AuthResponse refresh(AuthToken oldToken) { String refreshTokenUrl = UrlBuilder.getDouyinRefreshUrl(config.getClientId(), oldToken.getRefreshToken()); diff --git a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java index 501bfde..2f8e3c0 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -26,7 +26,8 @@ public class AuthFacebookRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getFacebookAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getFacebookAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); JSONObject object = JSONObject.parseObject(response.body()); @@ -70,4 +71,14 @@ public class AuthFacebookRequest extends BaseAuthRequest { .source(AuthSource.FACEBOOK) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getFacebookAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java index 1f39962..1e3ae3b 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -26,15 +26,14 @@ public class AuthGiteeRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getGiteeAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getGiteeAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); JSONObject accessTokenObject = JSONObject.parseObject(response.body()); if (accessTokenObject.containsKey("error")) { throw new AuthException("Unable to get token from gitee using code [" + code + "]"); } - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); } @Override @@ -58,4 +57,14 @@ public class AuthGiteeRequest extends BaseAuthRequest { .source(AuthSource.GITEE) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getGiteeAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java index df7c015..db7dcb2 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGithubRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -29,15 +29,14 @@ public class AuthGithubRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getGithubAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getGithubAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); Map res = GlobalAuthUtil.parseStringToMap(response.body()); if (res.containsKey("error")) { throw new AuthException(res.get("error") + ":" + res.get("error_description")); } - return AuthToken.builder() - .accessToken(res.get("access_token")) - .build(); + return AuthToken.builder().accessToken(res.get("access_token")).build(); } @Override @@ -61,4 +60,14 @@ public class AuthGithubRequest extends BaseAuthRequest { .source(AuthSource.GITHUB) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getGithubAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java index fa4527b..4e91761 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -63,4 +63,14 @@ public class AuthGoogleRequest extends BaseAuthRequest { .source(AuthSource.GOOGLE) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getGoogleAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java index e3bb69a..acdb664 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java @@ -5,8 +5,12 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; @@ -26,7 +30,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getLinkedinAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getLinkedinAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); return this.getToken(accessTokenUrl); } @@ -62,7 +67,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { String avatar = null; JSONObject profilePictureObject = userInfoObject.getJSONObject("profilePicture"); if (profilePictureObject.containsKey("displayImage~")) { - JSONArray displayImageElements = profilePictureObject.getJSONObject("displayImage~").getJSONArray("elements"); + JSONArray displayImageElements = profilePictureObject.getJSONObject("displayImage~") + .getJSONArray("elements"); if (null != displayImageElements && displayImageElements.size() > 0) { JSONObject largestImageObj = displayImageElements.getJSONObject(displayImageElements.size() - 1); avatar = largestImageObj.getJSONArray("identifiers").getJSONObject(0).getString("identifier"); @@ -83,6 +89,16 @@ public class AuthLinkedinRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getLinkedinAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + private String getUserEmail(String accessToken) { String email = null; HttpResponse emailResponse = HttpRequest.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))") @@ -93,7 +109,10 @@ public class AuthLinkedinRequest extends BaseAuthRequest { System.out.println(emailResponse.body()); JSONObject emailObj = JSONObject.parseObject(emailResponse.body()); if (emailObj.containsKey("elements")) { - email = emailObj.getJSONArray("elements").getJSONObject(0).getJSONObject("handle~").getString("emailAddress"); + email = emailObj.getJSONArray("elements") + .getJSONObject(0) + .getJSONObject("handle~") + .getString("emailAddress"); } return email; } @@ -112,7 +131,8 @@ public class AuthLinkedinRequest extends BaseAuthRequest { if (StringUtils.isEmpty(oldToken.getRefreshToken())) { throw new AuthException(ResponseStatus.UNSUPPORTED); } - String refreshTokenUrl = UrlBuilder.getLinkedinRefreshUrl(config.getClientId(), config.getClientSecret(), oldToken.getRefreshToken()); + String refreshTokenUrl = UrlBuilder.getLinkedinRefreshUrl(config.getClientId(), config.getClientSecret(), oldToken + .getRefreshToken()); return AuthResponse.builder() .code(ResponseStatus.SUCCESS.getCode()) .data(this.getToken(refreshTokenUrl)) diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java index 222729a..fe40401 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java @@ -5,8 +5,12 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; import java.text.MessageFormat; @@ -90,6 +94,16 @@ public class AuthMiRequest extends BaseAuthRequest { return authUser; } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getMiAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + /** * 刷新access token (续期) * diff --git a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java index 83300b1..8902338 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java @@ -5,8 +5,12 @@ import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; import java.util.HashMap; @@ -88,6 +92,16 @@ public class AuthMicrosoftRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getMicrosoftAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + /** * 刷新access token (续期) * diff --git a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java index 488e96e..0a4d934 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -26,15 +26,14 @@ public class AuthOschinaRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getOschinaAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getOschinaAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); JSONObject accessTokenObject = JSONObject.parseObject(response.body()); if (accessTokenObject.containsKey("error")) { throw new AuthException("Unable to get token from oschina using code [" + code + "]"); } - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(accessTokenObject.getString("access_token")).build(); } @Override @@ -58,4 +57,14 @@ public class AuthOschinaRequest extends BaseAuthRequest { .source(AuthSource.OSCHINA) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getOschinaAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index e205e32..d9ad586 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -5,8 +5,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -73,6 +73,16 @@ public class AuthQqRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getQqAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + private String getOpenId(AuthToken authToken) { String accessToken = authToken.getAccessToken(); HttpResponse response = HttpRequest.get(UrlBuilder.getQqOpenidUrl("https://graph.qq.com/oauth2.0/me", accessToken)) diff --git a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java index 56420de..4558597 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTaobaoRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -27,15 +27,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - return AuthToken.builder() - .accessCode(code) - .build(); + return AuthToken.builder().accessCode(code).build(); } @Override protected AuthUser getUserInfo(AuthToken authToken) { String accessCode = authToken.getAccessCode(); - HttpResponse response = HttpRequest.post(UrlBuilder.getTaobaoAccessTokenUrl(this.config.getClientId(), this.config.getClientSecret(), accessCode, this.config.getRedirectUri())).execute(); + HttpResponse response = HttpRequest.post(UrlBuilder.getTaobaoAccessTokenUrl(this.config.getClientId(), this.config + .getClientSecret(), accessCode, this.config.getRedirectUri())).execute(); JSONObject object = JSONObject.parseObject(response.body()); if (object.containsKey("error")) { throw new AuthException(ResponseStatus.FAILURE + ":" + object.getString("error_description")); @@ -56,4 +55,14 @@ public class AuthTaobaoRequest extends BaseAuthRequest { .source(AuthSource.TAOBAO) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getTaobaoAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java index 393bd2c..db4458b 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -32,9 +32,7 @@ public class AuthTencentCloudRequest extends BaseAuthRequest { if (object.getIntValue("code") != 0) { throw new AuthException("Unable to get token from tencent cloud using code [" + code + "]: " + object.get("msg")); } - return AuthToken.builder() - .accessToken(object.getString("access_token")) - .build(); + return AuthToken.builder().accessToken(object.getString("access_token")).build(); } @Override @@ -61,4 +59,14 @@ public class AuthTencentCloudRequest extends BaseAuthRequest { .source(AuthSource.TENCENT_CLOUD) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getTencentCloudAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java index a193b29..423595c 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java @@ -4,8 +4,12 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthToutiaoErrorCode; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -64,4 +68,14 @@ public class AuthToutiaoRequest extends BaseAuthRequest { .source(AuthSource.TOUTIAO) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getToutiaoAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java index 6dd4d31..3d9fb7c 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatRequest.java @@ -4,8 +4,12 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.*; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.model.AuthUserGender; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -55,6 +59,16 @@ public class AuthWeChatRequest extends BaseAuthRequest { .build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getWeChatAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } + @Override public AuthResponse refresh(AuthToken oldToken) { String refreshTokenUrl = UrlBuilder.getWeChatRefreshUrl(config.getClientId(), oldToken.getRefreshToken()); diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java index 6b44ba6..be04fb7 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java @@ -4,8 +4,8 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; @@ -29,7 +29,8 @@ public class AuthWeiboRequest extends BaseAuthRequest { @Override protected AuthToken getAccessToken(String code) { - String accessTokenUrl = UrlBuilder.getWeiboAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config.getRedirectUri()); + String accessTokenUrl = UrlBuilder.getWeiboAccessTokenUrl(config.getClientId(), config.getClientSecret(), code, config + .getRedirectUri()); HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); String accessTokenStr = response.body(); JSONObject accessTokenObject = JSONObject.parseObject(accessTokenStr); @@ -70,4 +71,14 @@ public class AuthWeiboRequest extends BaseAuthRequest { .source(AuthSource.WEIBO) .build(); } + + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ + @Override + public String authorize() { + return UrlBuilder.getWeiboAuthorizeUrl(config.getClientId(), config.getRedirectUri()); + } } diff --git a/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java b/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java index b0f6f82..4fa29c3 100644 --- a/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java +++ b/src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java @@ -1,11 +1,10 @@ package me.zhyd.oauth.request; import lombok.Data; -import me.zhyd.oauth.authorization.AuthorizationFactory; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.utils.AuthConfigChecker; @@ -53,8 +52,11 @@ public abstract class BaseAuthRequest implements AuthRequest { return AuthResponse.builder().code(errorCode).msg(e.getMessage()).build(); } + /** + * 返回认证url,可自行跳转页面 + * + * @return 返回授权地址 + */ @Override - public String authorize() { - return AuthorizationFactory.getAuthorize(source).getAuthorizeUrl(config); - } + public abstract String authorize(); } diff --git a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java index c05b04e..5451d48 100644 --- a/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java +++ b/src/main/java/me/zhyd/oauth/utils/AuthConfigChecker.java @@ -1,8 +1,8 @@ package me.zhyd.oauth.utils; import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthSource; import me.zhyd.oauth.request.ResponseStatus; /** diff --git a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java index db66917..b482499 100644 --- a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java +++ b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java @@ -1,6 +1,6 @@ package me.zhyd.oauth.utils; -import me.zhyd.oauth.consts.ApiUrl; +import me.zhyd.oauth.config.AuthSource; import java.text.MessageFormat; @@ -106,7 +106,7 @@ public class UrlBuilder { * @return full url */ public static String getGithubAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(GITHUB_ACCESS_TOKEN_PATTERN, ApiUrl.GITHUB.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(GITHUB_ACCESS_TOKEN_PATTERN, AuthSource.GITHUB.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -116,7 +116,7 @@ public class UrlBuilder { * @return full url */ public static String getGithubUserInfoUrl(String token) { - return MessageFormat.format(GITHUB_USER_INFO_PATTERN, ApiUrl.GITHUB.userInfo(), token); + return MessageFormat.format(GITHUB_USER_INFO_PATTERN, AuthSource.GITHUB.userInfo(), token); } /** @@ -127,7 +127,7 @@ public class UrlBuilder { * @return full url */ public static String getGithubAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(GITHUB_AUTHORIZE_PATTERN, ApiUrl.GITHUB.authorize(), clientId, redirectUrl); + return MessageFormat.format(GITHUB_AUTHORIZE_PATTERN, AuthSource.GITHUB.authorize(), clientId, redirectUrl); } /** @@ -140,7 +140,7 @@ public class UrlBuilder { * @return full url */ public static String getWeiboAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(WEIBO_ACCESS_TOKEN_PATTERN, ApiUrl.WEIBO.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(WEIBO_ACCESS_TOKEN_PATTERN, AuthSource.WEIBO.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -150,7 +150,7 @@ public class UrlBuilder { * @return full url */ public static String getWeiboUserInfoUrl(String token) { - return MessageFormat.format(WEIBO_USER_INFO_PATTERN, ApiUrl.WEIBO.userInfo(), token); + return MessageFormat.format(WEIBO_USER_INFO_PATTERN, AuthSource.WEIBO.userInfo(), token); } /** @@ -161,7 +161,7 @@ public class UrlBuilder { * @return full url */ public static String getWeiboAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(WEIBO_AUTHORIZE_PATTERN, ApiUrl.WEIBO.authorize(), clientId, redirectUrl); + return MessageFormat.format(WEIBO_AUTHORIZE_PATTERN, AuthSource.WEIBO.authorize(), clientId, redirectUrl); } /** @@ -174,7 +174,7 @@ public class UrlBuilder { * @return full url */ public static String getGiteeAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(GITEE_ACCESS_TOKEN_PATTERN, ApiUrl.GITEE.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(GITEE_ACCESS_TOKEN_PATTERN, AuthSource.GITEE.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -184,7 +184,7 @@ public class UrlBuilder { * @return full url */ public static String getGiteeUserInfoUrl(String token) { - return MessageFormat.format(GITEE_USER_INFO_PATTERN, ApiUrl.GITEE.userInfo(), token); + return MessageFormat.format(GITEE_USER_INFO_PATTERN, AuthSource.GITEE.userInfo(), token); } /** @@ -195,7 +195,7 @@ public class UrlBuilder { * @return json */ public static String getGiteeAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(GITEE_AUTHORIZE_PATTERN, ApiUrl.GITEE.authorize(), clientId, redirectUrl); + return MessageFormat.format(GITEE_AUTHORIZE_PATTERN, AuthSource.GITEE.authorize(), clientId, redirectUrl); } /** @@ -206,7 +206,7 @@ public class UrlBuilder { * @return full url */ public static String getDingTalkQrConnectUrl(String clientId, String redirectUrl) { - return MessageFormat.format(DING_TALK_QRCONNECT_PATTERN, ApiUrl.DINGTALK.authorize(), clientId, redirectUrl); + return MessageFormat.format(DING_TALK_QRCONNECT_PATTERN, AuthSource.DINGTALK.authorize(), clientId, redirectUrl); } /** @@ -218,7 +218,7 @@ public class UrlBuilder { * @return full url */ public static String getDingTalkUserInfoUrl(String signature, String timestamp, String accessKey) { - return MessageFormat.format(DING_TALK_USER_INFO_PATTERN, ApiUrl.DINGTALK.userInfo(), signature, timestamp, accessKey); + return MessageFormat.format(DING_TALK_USER_INFO_PATTERN, AuthSource.DINGTALK.userInfo(), signature, timestamp, accessKey); } /** @@ -231,7 +231,7 @@ public class UrlBuilder { * @return full url */ public static String getBaiduAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(BAIDU_ACCESS_TOKEN_PATTERN, ApiUrl.BAIDU.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(BAIDU_ACCESS_TOKEN_PATTERN, AuthSource.BAIDU.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -241,7 +241,7 @@ public class UrlBuilder { * @return full url */ public static String getBaiduUserInfoUrl(String token) { - return MessageFormat.format(BAIDU_USER_INFO_PATTERN, ApiUrl.BAIDU.userInfo(), token); + return MessageFormat.format(BAIDU_USER_INFO_PATTERN, AuthSource.BAIDU.userInfo(), token); } /** @@ -252,7 +252,7 @@ public class UrlBuilder { * @return json */ public static String getBaiduAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(BAIDU_AUTHORIZE_PATTERN, ApiUrl.BAIDU.authorize(), clientId, redirectUrl); + return MessageFormat.format(BAIDU_AUTHORIZE_PATTERN, AuthSource.BAIDU.authorize(), clientId, redirectUrl); } /** @@ -262,7 +262,7 @@ public class UrlBuilder { * @return json */ public static String getBaiduRevokeUrl(String accessToken) { - return MessageFormat.format(BAIDU_REVOKE_PATTERN, ApiUrl.BAIDU.revoke(), accessToken); + return MessageFormat.format(BAIDU_REVOKE_PATTERN, AuthSource.BAIDU.revoke(), accessToken); } /** @@ -275,7 +275,7 @@ public class UrlBuilder { * @return full url */ public static String getCsdnAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(CSDN_ACCESS_TOKEN_PATTERN, ApiUrl.CSDN.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(CSDN_ACCESS_TOKEN_PATTERN, AuthSource.CSDN.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -285,7 +285,7 @@ public class UrlBuilder { * @return full url */ public static String getCsdnUserInfoUrl(String token) { - return MessageFormat.format(CSDN_USER_INFO_PATTERN, ApiUrl.CSDN.userInfo(), token); + return MessageFormat.format(CSDN_USER_INFO_PATTERN, AuthSource.CSDN.userInfo(), token); } /** @@ -296,7 +296,7 @@ public class UrlBuilder { * @return full url */ public static String getCsdnAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(CSDN_AUTHORIZE_PATTERN, ApiUrl.CSDN.authorize(), clientId, redirectUrl); + return MessageFormat.format(CSDN_AUTHORIZE_PATTERN, AuthSource.CSDN.authorize(), clientId, redirectUrl); } /** @@ -308,7 +308,7 @@ public class UrlBuilder { * @return full url */ public static String getCodingAccessTokenUrl(String clientId, String clientSecret, String code) { - return MessageFormat.format(CODING_ACCESS_TOKEN_PATTERN, ApiUrl.CODING.accessToken(), clientId, clientSecret, code); + return MessageFormat.format(CODING_ACCESS_TOKEN_PATTERN, AuthSource.CODING.accessToken(), clientId, clientSecret, code); } /** @@ -318,7 +318,7 @@ public class UrlBuilder { * @return full url */ public static String getCodingUserInfoUrl(String token) { - return MessageFormat.format(CODING_USER_INFO_PATTERN, ApiUrl.CODING.userInfo(), token); + return MessageFormat.format(CODING_USER_INFO_PATTERN, AuthSource.CODING.userInfo(), token); } /** @@ -329,7 +329,7 @@ public class UrlBuilder { * @return full url */ public static String getCodingAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(CODING_AUTHORIZE_PATTERN, ApiUrl.CODING.authorize(), clientId, redirectUrl); + return MessageFormat.format(CODING_AUTHORIZE_PATTERN, AuthSource.CODING.authorize(), clientId, redirectUrl); } /** @@ -341,7 +341,7 @@ public class UrlBuilder { * @return full url */ public static String getTencentCloudAccessTokenUrl(String clientId, String clientSecret, String code) { - return MessageFormat.format(TENCENT_ACCESS_TOKEN_PATTERN, ApiUrl.TENCENTCLOUD.accessToken(), clientId, clientSecret, code); + return MessageFormat.format(TENCENT_ACCESS_TOKEN_PATTERN, AuthSource.TENCENT_CLOUD.accessToken(), clientId, clientSecret, code); } /** @@ -351,7 +351,7 @@ public class UrlBuilder { * @return full url */ public static String getTencentCloudUserInfoUrl(String token) { - return MessageFormat.format(TENCENT_USER_INFO_PATTERN, ApiUrl.TENCENTCLOUD.userInfo(), token); + return MessageFormat.format(TENCENT_USER_INFO_PATTERN, AuthSource.TENCENT_CLOUD.userInfo(), token); } /** @@ -362,7 +362,7 @@ public class UrlBuilder { * @return full url */ public static String getTencentCloudAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(TENCENT_AUTHORIZE_PATTERN, ApiUrl.TENCENTCLOUD.authorize(), clientId, redirectUrl); + return MessageFormat.format(TENCENT_AUTHORIZE_PATTERN, AuthSource.TENCENT_CLOUD.authorize(), clientId, redirectUrl); } /** @@ -375,7 +375,7 @@ public class UrlBuilder { * @return full url */ public static String getOschinaAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(OSCHINA_ACCESS_TOKEN_PATTERN, ApiUrl.OSCHINA.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(OSCHINA_ACCESS_TOKEN_PATTERN, AuthSource.OSCHINA.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -385,7 +385,7 @@ public class UrlBuilder { * @return full url */ public static String getOschinaUserInfoUrl(String token) { - return MessageFormat.format(OSCHINA_USER_INFO_PATTERN, ApiUrl.OSCHINA.userInfo(), token); + return MessageFormat.format(OSCHINA_USER_INFO_PATTERN, AuthSource.OSCHINA.userInfo(), token); } /** @@ -396,7 +396,7 @@ public class UrlBuilder { * @return full url */ public static String getOschinaAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(OSCHINA_AUTHORIZE_PATTERN, ApiUrl.OSCHINA.authorize(), clientId, redirectUrl); + return MessageFormat.format(OSCHINA_AUTHORIZE_PATTERN, AuthSource.OSCHINA.authorize(), clientId, redirectUrl); } /** @@ -409,7 +409,7 @@ public class UrlBuilder { * @return full url */ public static String getQqAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(QQ_ACCESS_TOKEN_PATTERN, ApiUrl.QQ.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(QQ_ACCESS_TOKEN_PATTERN, AuthSource.QQ.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -421,7 +421,7 @@ public class UrlBuilder { * @return full url */ public static String getQqUserInfoUrl(String clientId, String token, String openId) { - return MessageFormat.format(QQ_USER_INFO_PATTERN, ApiUrl.QQ.userInfo(), clientId, token, openId); + return MessageFormat.format(QQ_USER_INFO_PATTERN, AuthSource.QQ.userInfo(), clientId, token, openId); } /** @@ -432,7 +432,7 @@ public class UrlBuilder { * @return full url */ public static String getQqAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(QQ_AUTHORIZE_PATTERN, ApiUrl.QQ.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(QQ_AUTHORIZE_PATTERN, AuthSource.QQ.authorize(), clientId, redirectUrl, System.currentTimeMillis()); } /** @@ -454,7 +454,7 @@ public class UrlBuilder { * @return full url */ public static String getAlipayAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(ALIPAY_AUTHORIZE_PATTERN, ApiUrl.ALIPAY.authorize(), clientId, redirectUrl); + return MessageFormat.format(ALIPAY_AUTHORIZE_PATTERN, AuthSource.ALIPAY.authorize(), clientId, redirectUrl); } /** @@ -465,7 +465,8 @@ public class UrlBuilder { * @return full url */ public static String getWeChatAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(WECHAT_AUTHORIZE_PATTERN, ApiUrl.WECHAT.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(WECHAT_AUTHORIZE_PATTERN, AuthSource.WECHAT.authorize(), clientId, redirectUrl, System + .currentTimeMillis()); } /** @@ -477,7 +478,7 @@ public class UrlBuilder { * @return full url */ public static String getWeChatAccessTokenUrl(String clientId, String clientSecret, String code) { - return MessageFormat.format(WECHAT_ACCESS_TOKEN_PATTERN, ApiUrl.WECHAT.accessToken(), clientId, clientSecret, code); + return MessageFormat.format(WECHAT_ACCESS_TOKEN_PATTERN, AuthSource.WECHAT.accessToken(), clientId, clientSecret, code); } /** @@ -488,7 +489,7 @@ public class UrlBuilder { * @return full url */ public static String getWeChatUserInfoUrl(String token, String openId) { - return MessageFormat.format(WECHAT_USER_INFO_PATTERN, ApiUrl.WECHAT.userInfo(), token, openId); + return MessageFormat.format(WECHAT_USER_INFO_PATTERN, AuthSource.WECHAT.userInfo(), token, openId); } /** @@ -499,7 +500,7 @@ public class UrlBuilder { * @return full url */ public static String getWeChatRefreshUrl(String clientId, String refreshToken) { - return MessageFormat.format(WECHAT_REFRESH_TOKEN_PATTERN, ApiUrl.WECHAT.refresh(), clientId, refreshToken); + return MessageFormat.format(WECHAT_REFRESH_TOKEN_PATTERN, AuthSource.WECHAT.refresh(), clientId, refreshToken); } /** @@ -512,7 +513,7 @@ public class UrlBuilder { * @return full url */ public static String getTaobaoAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(TAOBAO_ACCESS_TOKEN_PATTERN, ApiUrl.TAOBAO.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(TAOBAO_ACCESS_TOKEN_PATTERN, AuthSource.TAOBAO.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -523,7 +524,8 @@ public class UrlBuilder { * @return full url */ public static String getTaobaoAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(TAOBAO_AUTHORIZE_PATTERN, ApiUrl.TAOBAO.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(TAOBAO_AUTHORIZE_PATTERN, AuthSource.TAOBAO.authorize(), clientId, redirectUrl, System + .currentTimeMillis()); } /** @@ -534,7 +536,8 @@ public class UrlBuilder { * @return full url */ public static String getGoogleAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(GOOGLE_AUTHORIZE_PATTERN, ApiUrl.GOOGLE.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(GOOGLE_AUTHORIZE_PATTERN, AuthSource.GOOGLE.authorize(), clientId, redirectUrl, System + .currentTimeMillis()); } /** @@ -547,7 +550,7 @@ public class UrlBuilder { * @return full url */ public static String getGoogleAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(GOOGLE_ACCESS_TOKEN_PATTERN, ApiUrl.GOOGLE.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(GOOGLE_ACCESS_TOKEN_PATTERN, AuthSource.GOOGLE.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -557,7 +560,7 @@ public class UrlBuilder { * @return full url */ public static String getGoogleUserInfoUrl(String token) { - return MessageFormat.format(GOOGLE_USER_INFO_PATTERN, ApiUrl.GOOGLE.userInfo(), token); + return MessageFormat.format(GOOGLE_USER_INFO_PATTERN, AuthSource.GOOGLE.userInfo(), token); } /** @@ -568,7 +571,7 @@ public class UrlBuilder { * @return full url */ public static String getFacebookAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(FACEBOOK_AUTHORIZE_PATTERN, ApiUrl.FACEBOOK.authorize(), clientId, redirectUrl, System + return MessageFormat.format(FACEBOOK_AUTHORIZE_PATTERN, AuthSource.FACEBOOK.authorize(), clientId, redirectUrl, System .currentTimeMillis()); } @@ -582,7 +585,7 @@ public class UrlBuilder { * @return full url */ public static String getFacebookAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) { - return MessageFormat.format(FACEBOOK_ACCESS_TOKEN_PATTERN, ApiUrl.FACEBOOK.accessToken(), clientId, clientSecret, code, redirectUri); + return MessageFormat.format(FACEBOOK_ACCESS_TOKEN_PATTERN, AuthSource.FACEBOOK.accessToken(), clientId, clientSecret, code, redirectUri); } /** @@ -592,7 +595,7 @@ public class UrlBuilder { * @return full url */ public static String getFacebookUserInfoUrl(String token) { - return MessageFormat.format(FACEBOOK_USER_INFO_PATTERN, ApiUrl.FACEBOOK.userInfo(), token); + return MessageFormat.format(FACEBOOK_USER_INFO_PATTERN, AuthSource.FACEBOOK.userInfo(), token); } /** @@ -603,7 +606,8 @@ public class UrlBuilder { * @return full url */ public static String getDouyinAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(DOUYIN_AUTHORIZE_PATTERN, ApiUrl.DOUYIN.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(DOUYIN_AUTHORIZE_PATTERN, AuthSource.DOUYIN.authorize(), clientId, redirectUrl, System + .currentTimeMillis()); } /** @@ -615,7 +619,7 @@ public class UrlBuilder { * @return full url */ public static String getDouyinAccessTokenUrl(String clientId, String clientSecret, String code) { - return MessageFormat.format(DOUYIN_ACCESS_TOKEN_PATTERN, ApiUrl.DOUYIN.accessToken(), clientId, clientSecret, code); + return MessageFormat.format(DOUYIN_ACCESS_TOKEN_PATTERN, AuthSource.DOUYIN.accessToken(), clientId, clientSecret, code); } /** @@ -626,7 +630,7 @@ public class UrlBuilder { * @return full url */ public static String getDouyinUserInfoUrl(String token, String openId) { - return MessageFormat.format(DOUYIN_USER_INFO_PATTERN, ApiUrl.DOUYIN.userInfo(), token, openId); + return MessageFormat.format(DOUYIN_USER_INFO_PATTERN, AuthSource.DOUYIN.userInfo(), token, openId); } /** @@ -637,7 +641,7 @@ public class UrlBuilder { * @return full url */ public static String getDouyinRefreshUrl(String clientId, String refreshToken) { - return MessageFormat.format(DOUYIN_REFRESH_TOKEN_PATTERN, ApiUrl.DOUYIN.refresh(), clientId, refreshToken); + return MessageFormat.format(DOUYIN_REFRESH_TOKEN_PATTERN, AuthSource.DOUYIN.refresh(), clientId, refreshToken); } /** @@ -648,7 +652,7 @@ public class UrlBuilder { * @return full url */ public static String getLinkedinAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(LINKEDIN_AUTHORIZE_PATTERN, ApiUrl.LINKEDIN.authorize(), clientId, redirectUrl, System + return MessageFormat.format(LINKEDIN_AUTHORIZE_PATTERN, AuthSource.LINKEDIN.authorize(), clientId, redirectUrl, System .currentTimeMillis()); } @@ -662,7 +666,7 @@ public class UrlBuilder { * @return full url */ public static String getLinkedinAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUrl) { - return MessageFormat.format(LINKEDIN_ACCESS_TOKEN_PATTERN, ApiUrl.LINKEDIN.accessToken(), clientId, clientSecret, code, redirectUrl); + return MessageFormat.format(LINKEDIN_ACCESS_TOKEN_PATTERN, AuthSource.LINKEDIN.accessToken(), clientId, clientSecret, code, redirectUrl); } /** @@ -671,7 +675,7 @@ public class UrlBuilder { * @return full url */ public static String getLinkedinUserInfoUrl() { - return MessageFormat.format(LINKEDIN_USER_INFO_PATTERN, ApiUrl.LINKEDIN.userInfo()); + return MessageFormat.format(LINKEDIN_USER_INFO_PATTERN, AuthSource.LINKEDIN.userInfo()); } /** @@ -683,7 +687,7 @@ public class UrlBuilder { * @return full url */ public static String getLinkedinRefreshUrl(String clientId, String clientSecret, String refreshToken) { - return MessageFormat.format(LINKEDIN_REFRESH_TOKEN_PATTERN, ApiUrl.LINKEDIN.refresh(), clientId, clientSecret, refreshToken); + return MessageFormat.format(LINKEDIN_REFRESH_TOKEN_PATTERN, AuthSource.LINKEDIN.refresh(), clientId, clientSecret, refreshToken); } /** @@ -694,7 +698,7 @@ public class UrlBuilder { * @return full url */ public static String getMicrosoftAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(MICROSOFT_AUTHORIZE_PATTERN, ApiUrl.MICROSOFT.authorize(), clientId, redirectUrl, System + return MessageFormat.format(MICROSOFT_AUTHORIZE_PATTERN, AuthSource.MICROSOFT.authorize(), clientId, redirectUrl, System .currentTimeMillis()); } @@ -708,7 +712,7 @@ public class UrlBuilder { * @return full url */ public static String getMicrosoftAccessTokenUrl(String clientId, String clientSecret, String redirectUrl, String code) { - return MessageFormat.format(MICROSOFT_ACCESS_TOKEN_PATTERN, ApiUrl.MICROSOFT.accessToken(), clientId, clientSecret, redirectUrl, code); + return MessageFormat.format(MICROSOFT_ACCESS_TOKEN_PATTERN, AuthSource.MICROSOFT.accessToken(), clientId, clientSecret, redirectUrl, code); } /** @@ -717,7 +721,7 @@ public class UrlBuilder { * @return full url */ public static String getMicrosoftUserInfoUrl() { - return MessageFormat.format(MICROSOFT_USER_INFO_PATTERN, ApiUrl.MICROSOFT.userInfo()); + return MessageFormat.format(MICROSOFT_USER_INFO_PATTERN, AuthSource.MICROSOFT.userInfo()); } /** @@ -730,7 +734,7 @@ public class UrlBuilder { * @return full url */ public static String getMicrosoftRefreshUrl(String clientId, String clientSecret, String redirectUrl, String refreshToken) { - return MessageFormat.format(MICROSOFT_REFRESH_TOKEN_PATTERN, ApiUrl.MICROSOFT.refresh(), clientId, clientSecret, redirectUrl, refreshToken); + return MessageFormat.format(MICROSOFT_REFRESH_TOKEN_PATTERN, AuthSource.MICROSOFT.refresh(), clientId, clientSecret, redirectUrl, refreshToken); } /** @@ -741,7 +745,7 @@ public class UrlBuilder { * @return full url */ public static String getMiAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(MI_AUTHORIZE_PATTERN, ApiUrl.MI.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(MI_AUTHORIZE_PATTERN, AuthSource.MI.authorize(), clientId, redirectUrl, System.currentTimeMillis()); } /** @@ -754,7 +758,7 @@ public class UrlBuilder { * @return full url */ public static String getMiAccessTokenUrl(String clientId, String clientSecret, String redirectUrl, String code) { - return MessageFormat.format(MI_ACCESS_TOKEN_PATTERN, ApiUrl.MI.accessToken(), clientId, clientSecret, redirectUrl, code); + return MessageFormat.format(MI_ACCESS_TOKEN_PATTERN, AuthSource.MI.accessToken(), clientId, clientSecret, redirectUrl, code); } /** @@ -765,7 +769,7 @@ public class UrlBuilder { * @return full url */ public static String getMiUserInfoUrl(String clientId, String token) { - return MessageFormat.format(MI_USER_INFO_PATTERN, ApiUrl.MI.userInfo(), clientId, token); + return MessageFormat.format(MI_USER_INFO_PATTERN, AuthSource.MI.userInfo(), clientId, token); } /** @@ -778,7 +782,7 @@ public class UrlBuilder { * @return full url */ public static String getMiRefreshUrl(String clientId, String clientSecret, String redirectUrl, String refreshToken) { - return MessageFormat.format(MI_REFRESH_TOKEN_PATTERN, ApiUrl.MI.refresh(), clientId, clientSecret, redirectUrl, refreshToken); + return MessageFormat.format(MI_REFRESH_TOKEN_PATTERN, AuthSource.MI.refresh(), clientId, clientSecret, redirectUrl, refreshToken); } /** @@ -789,7 +793,8 @@ public class UrlBuilder { * @return full url */ public static String getToutiaoAuthorizeUrl(String clientId, String redirectUrl) { - return MessageFormat.format(TOUTIAO_AUTHORIZE_PATTERN, ApiUrl.TOUTIAO.authorize(), clientId, redirectUrl, System.currentTimeMillis()); + return MessageFormat.format(TOUTIAO_AUTHORIZE_PATTERN, AuthSource.TOUTIAO.authorize(), clientId, redirectUrl, System + .currentTimeMillis()); } /** @@ -801,7 +806,7 @@ public class UrlBuilder { * @return full url */ public static String getToutiaoAccessTokenUrl(String clientId, String clientSecret, String code) { - return MessageFormat.format(TOUTIAO_ACCESS_TOKEN_PATTERN, ApiUrl.TOUTIAO.accessToken(), clientId, clientSecret, code); + return MessageFormat.format(TOUTIAO_ACCESS_TOKEN_PATTERN, AuthSource.TOUTIAO.accessToken(), clientId, clientSecret, code); } /** @@ -812,6 +817,6 @@ public class UrlBuilder { * @return full url */ public static String getToutiaoUserInfoUrl(String clientId, String token) { - return MessageFormat.format(TOUTIAO_USER_INFO_PATTERN, ApiUrl.TOUTIAO.userInfo(), clientId, token); + return MessageFormat.format(TOUTIAO_USER_INFO_PATTERN, AuthSource.TOUTIAO.userInfo(), clientId, token); } } diff --git a/update.md b/update.md index 0b58011..9183d2d 100644 --- a/update.md +++ b/update.md @@ -1,10 +1,13 @@ -### 2019/06/18 +### 2019/06/19 +1. 合并[xkcoding](https://github.com/xkcoding)提交的[PR](https://github.com/zhangyd-c/JustAuth/pull/14),重构了部分代码,jar包由原来的`130+kb`优化到现在的`110+kb` + +### 2019/06/18 1. 解决Issue [#IY2HW](https://gitee.com/yadong.zhang/JustAuth/issues/IY2HW) 2. 解决Issue [#IY2OH](https://gitee.com/yadong.zhang/JustAuth/issues/IY2OH) 3. 解决Issue [#IY2FV](https://gitee.com/yadong.zhang/JustAuth/issues/IY2FV) 4. 修复部分注释、拼写错误 5. 解决Issue [#IY1QR](https://gitee.com/yadong.zhang/JustAuth/issues/IY1QR) 增加对Config属性的校验功能,主要校验redirect uri的合法性 -6. 合并[skqing](https://gitee.com/skqing)提交的[PR](https://gitee.com/yadong.zhang/JustAuth/pulls/2) +6. 合并[skqing](https://gitee.com/skqing)提交的[PR](https://gitee.com/yadong.zhang/JustAuth/pulls/2),解决一些BUG ### 2019/06/06 1. 增加今日头条的授权登陆