From e93ad07c5fab274eb3de38a3c7b5a173beb4646d Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Sun, 7 Jun 2020 16:28:27 +0800 Subject: [PATCH] :bookmark: 1.15.5-alpha --- README.en-US.md | 8 +- README.md | 6 +- bin/version.txt | 2 +- docs/README.md | 4 +- docs/_coverpage.md | 2 +- docs/_media/oauth/2f1b9c2c.png | Bin 0 -> 10763 bytes docs/_media/oauth/7fded4b4.png | Bin 0 -> 118669 bytes docs/_media/oauth/ac549f1a.png | Bin 0 -> 52562 bytes docs/_media/oauth/ca78b40f.png | Bin 0 -> 27657 bytes docs/_sidebar.md | 3 +- docs/oauth/alipay.md | 8 + docs/oauth/coding.md | 151 ++++++++++++++++++ docs/update.md | 28 ++++ pom.xml | 4 +- .../java/me/zhyd/oauth/config/AuthConfig.java | 20 +++ .../zhyd/oauth/config/AuthDefaultSource.java | 30 +--- .../zhyd/oauth/request/AuthBaiduRequest.java | 13 +- .../zhyd/oauth/request/AuthCodingRequest.java | 35 +++- .../oauth/request/AuthDefaultRequest.java | 14 +- .../oauth/request/AuthDingTalkRequest.java | 4 +- .../zhyd/oauth/request/AuthDouyinRequest.java | 4 +- .../zhyd/oauth/request/AuthElemeRequest.java | 8 +- .../zhyd/oauth/request/AuthFeishuRequest.java | 8 +- .../zhyd/oauth/request/AuthGoogleRequest.java | 4 +- .../zhyd/oauth/request/AuthHuaweiRequest.java | 8 +- .../me/zhyd/oauth/request/AuthJdRequest.java | 8 +- .../oauth/request/AuthKujialeRequest.java | 8 +- .../oauth/request/AuthLinkedinRequest.java | 8 +- .../oauth/request/AuthMeituanRequest.java | 8 +- .../me/zhyd/oauth/request/AuthMiRequest.java | 6 +- .../oauth/request/AuthMicrosoftRequest.java | 12 +- .../oauth/request/AuthPinterestRequest.java | 4 +- .../me/zhyd/oauth/request/AuthQqRequest.java | 6 +- .../zhyd/oauth/request/AuthRenrenRequest.java | 4 +- .../request/AuthStackOverflowRequest.java | 6 +- .../oauth/request/AuthTeambitionRequest.java | 8 +- .../request/AuthTencentCloudRequest.java | 93 ----------- .../oauth/request/AuthTwitterRequest.java | 8 +- .../request/AuthWeChatEnterpriseRequest.java | 4 +- .../oauth/request/AuthWeChatMpRequest.java | 4 +- .../oauth/request/AuthWeChatOpenRequest.java | 4 +- .../zhyd/oauth/request/AuthWeiboRequest.java | 4 +- .../java/me/zhyd/oauth/utils/AuthChecker.java | 3 + .../java/me/zhyd/oauth/utils/HttpUtils.java | 105 ++++++++++++ 44 files changed, 453 insertions(+), 214 deletions(-) create mode 100644 docs/_media/oauth/2f1b9c2c.png create mode 100644 docs/_media/oauth/7fded4b4.png create mode 100644 docs/_media/oauth/ac549f1a.png create mode 100644 docs/_media/oauth/ca78b40f.png create mode 100644 docs/oauth/coding.md delete mode 100644 src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java create mode 100644 src/main/java/me/zhyd/oauth/utils/HttpUtils.java diff --git a/README.en-US.md b/README.en-US.md index e357ed6..7bea0fa 100644 --- a/README.en-US.md +++ b/README.en-US.md @@ -6,7 +6,7 @@

- + @@ -15,7 +15,7 @@ - + @@ -97,7 +97,7 @@ These artifacts are available from Maven Central: me.zhyd.oauth JustAuth - 1.15.4-alpha + 1.15.5-alpha ``` - Using JustAuth @@ -182,7 +182,7 @@ Note, that since [v1.14.0](https://gitee.com/yadong.zhang/JustAuth/releases/v1.1 | | [AuthFacebookRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthFacebookRequest.java) | 参考文档 | | | [AuthDouyinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java) | 参考文档 | | | [AuthLinkedinRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java) | 参考文档 | -| | [AuthMicrosoftRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java) | 参考文档 | +| | [AuthMicrosoftRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java) | 参考文档 | | | [AuthMiRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java) | 参考文档 | | | [AuthToutiaoRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthToutiaoRequest.java) | 参考文档 | | | [AuthTeambitionRequest](https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java) | 参考文档 | diff --git a/README.md b/README.md index ebcbd0c..0e1b063 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

- + @@ -15,7 +15,7 @@ - + @@ -96,7 +96,7 @@ JustAuth,如你所见,它仅仅是一个**第三方授权登录**的**工具 me.zhyd.oauth JustAuth - 1.15.4-alpha + 1.15.5-alpha ``` - 调用api diff --git a/bin/version.txt b/bin/version.txt index 819e103..a432d33 100644 --- a/bin/version.txt +++ b/bin/version.txt @@ -1 +1 @@ -1.15.4-alpha +1.15.5-alpha diff --git a/docs/README.md b/docs/README.md index 60066f8..15bd849 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,7 +9,7 @@

- + @@ -18,7 +18,7 @@ - + diff --git a/docs/_coverpage.md b/docs/_coverpage.md index b02d757..7de1695 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,6 +1,6 @@ ![](_media/justauth@0,25x.png) -# JustAuth 1.15.4-alpha +# JustAuth 1.15.5-alpha 史上最全的整合第三方登录的开源库 diff --git a/docs/_media/oauth/2f1b9c2c.png b/docs/_media/oauth/2f1b9c2c.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e734bc1b75534b5b5f801696bcddaa8ab326b3 GIT binary patch literal 10763 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

{osY;$ajn8XJRSYW#oy9h}&T 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 ``` +``` + + com.alipay.sdk + alipay-sdk-java + 3.7.4.ALL + +``` + `${latest.version}`表示当前最新的版本,可以在[这儿](https://github.com/justauth/JustAuth/releases)获取最新的版本信息。 ### 2.2 创建Request diff --git a/docs/oauth/coding.md b/docs/oauth/coding.md new file mode 100644 index 0000000..49e6399 --- /dev/null +++ b/docs/oauth/coding.md @@ -0,0 +1,151 @@ +## 1. 申请应用 + +## 创建 CODING 应用 +1. 点击【个人设置】->【开放生态】->【创建应用】,注册需要接入 CODING 的应用。 + +![](../_media/oauth/7fded4b4.png) + +2. 在创建应用页面,填写接入的应用信息: + +- 应用名称、应用主页及回调地址为必填项; +- 其中回调地址是用户授权后,CODING 回调到应用,并且回传授权码的地址; +- 如果没有上传图标将自动生成应用图标。 + +填写完毕后,点击【创建应用】。 + +![](../_media/oauth/ca78b40f.png) + +注意:回调地址不支持 `127.0.0.1`、`localhost` 等配置 + +3. 应用创建完成后,在应用详情页,会生成 Client ID 和 Client Secret ,保存以便后续认证使用。 + +![](../_media/oauth/ac549f1a.png) + +## 2. 集成JustAuth + +### 2.1 引入依赖 + +```xml + + me.zhyd.oauth + JustAuth + ${latest.version} + +``` + +`${latest.version}`表示当前最新的版本,可以在[这儿](https://github.com/justauth/JustAuth/releases)获取最新的版本信息。 + +### 2.2 创建Request + +```java +AuthRequest authRequest = new AuthTencentCloudRequest(AuthConfig.builder() + .clientId("App Key") + .clientSecret("App Secret") + .redirectUri("授权回调页") + .build()); +``` + +### 2.3 生成授权地址 + +我们可以直接使用以下方式生成第三方平台的授权链接: +```java +String authorizeUrl = authRequest.authorize(AuthStateUtils.createState()); +``` +这个链接我们可以直接后台重定向跳转,也可以返回到前端后,前端控制跳转。前端控制的好处就是,可以将第三方的授权页嵌入到iframe中,适配网站设计。 + + +### 2.4 以上完整代码如下 + +```java +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.request.AuthWeiboRequest; +import me.zhyd.oauth.model.AuthCallback; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.request.AuthRequest; +import me.zhyd.oauth.utils.AuthStateUtils; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + + +@RestController +@RequestMapping("/oauth") +public class RestAuthController { + + @RequestMapping("/render") + public void renderAuth(HttpServletResponse response) throws IOException { + AuthRequest authRequest = getAuthRequest(); + response.sendRedirect(authRequest.authorize(AuthStateUtils.createState())); + } + + @RequestMapping("/callback") + public Object login(AuthCallback callback) { + AuthRequest authRequest = getAuthRequest(); + return authRequest.login(callback); + } + + @RequestMapping("/revoke/{token}") + public Object revokeAuth(@PathVariable("token") String token) throws IOException { + AuthRequest authRequest = getAuthRequest(); + return authRequest.revoke(AuthToken.builder().accessToken(token).build()); + } + + private AuthRequest getAuthRequest() { + return new AuthTencentCloudRequest(AuthConfig.builder() + .clientId("App Key") + .clientSecret("App Secret") + .redirectUri("授权回调页") + // 比如以“ https://justauth.coding.net/ ”为例,codingGroupName = justauth + .codingGroupName("团队名") + .build()); + } +} +``` +授权链接访问成功后会看到以下页面内容: + +![](../_media/oauth/2f1b9c2c.png) + +## 3. 授权结果 + +```json +{ + "code": 2000, + "msg": null, + "data": { + "uuid": "xxx", + "username": "yadong.zhang", + "nickname": "yadong.zhang", + "avatar": "https://coding.net/static/fruit_avatar/Fruit-6.png", + "blog": "https://coding.net/u/HNMxPTOFRd", + "company": "", + "location": "", + "email": null, + "remark": "", + "gender": "FEMALE", + "source": "CODING", + "token": { + "accessToken": "xx", + "expireIn": 858292, + "refreshToken": "xx", + "uid": null, + "openId": null, + "accessCode": null, + "unionId": null, + "scope": null, + "tokenType": null, + "idToken": null, + "macAlgorithm": null, + "macKey": null, + "code": null, + "oauthToken": null, + "oauthTokenSecret": null, + "userId": null, + "screenName": null, + "oauthCallbackConfirmed": null + } + } +} +``` \ No newline at end of file diff --git a/docs/update.md b/docs/update.md index 9537642..f3478f4 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,3 +1,31 @@ +## 1.15.5-alpha +### 2020/06/07 +- 修复 + - 解决 `Microsoft` 授权失败的 BUG + - 解决 `Coding` 个人账号授权失败的 BUG(目前只能使用团队模式进行授权,需要传入团队名,参考`AuthConfig#codingGroupName`) +- 新增 + - 支持 Http 级的代理配置,使用方式: +```java +new AuthGoogleRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://127.0.0.1:8443/oauth/callback/google") + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); +``` +- 删除 + - 删除**腾讯云登录**。coding 已并入 腾讯云,因此只保留 coding 登录 +- 文档 + - 新增 [Coding登录](oauth/coding.md)文档 + - 完善 [支付宝登录](oauth/alipay.md)文档 +- PR + - 合并 [Gitee!17](https://gitee.com/yadong.zhang/JustAuth/pulls/17) + - 合并 [Gitee!15](https://gitee.com/yadong.zhang/JustAuth/pulls/15) + ## 1.15.4-alpha ### 2020/05/13 - 修复 diff --git a/pom.xml b/pom.xml index 031abda..de88388 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.zhyd.oauth JustAuth - 1.15.4-alpha + 1.15.5-alpha JustAuth https://gitee.com/yadong.zhang/JustAuth @@ -60,7 +60,7 @@ 2.20 1.6 false - 1.0.1 + 1.0.2-SNAPSHOT 1.18.10 4.11 1.2.69 diff --git a/src/main/java/me/zhyd/oauth/config/AuthConfig.java b/src/main/java/me/zhyd/oauth/config/AuthConfig.java index 3a64aea..e17bcd8 100644 --- a/src/main/java/me/zhyd/oauth/config/AuthConfig.java +++ b/src/main/java/me/zhyd/oauth/config/AuthConfig.java @@ -1,5 +1,6 @@ package me.zhyd.oauth.config; +import com.xkcoding.http.config.HttpConfig; import lombok.*; /** @@ -59,4 +60,23 @@ public class AuthConfig { * @since 1.10.0 */ private String agentId; + + /** + * 使用 Coding 登录时,需要传该值。 + * + * 团队域名前缀,比如以“ https://justauth.coding.net/ ”为例,{@code codingGroupName} = justauth + * + * @since 1.15.5 + */ + private String codingGroupName; + + /** + * 针对国外服务可以单独设置代理 + * HttpConfig config = new HttpConfig(); + * config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))); + * config.setTimeout(15000); + * + * @since 1.15.5 + */ + private HttpConfig httpConfig; } diff --git a/src/main/java/me/zhyd/oauth/config/AuthDefaultSource.java b/src/main/java/me/zhyd/oauth/config/AuthDefaultSource.java index 8ed7488..1a02e73 100644 --- a/src/main/java/me/zhyd/oauth/config/AuthDefaultSource.java +++ b/src/main/java/me/zhyd/oauth/config/AuthDefaultSource.java @@ -140,41 +140,25 @@ public enum AuthDefaultSource implements AuthSource { } }, /** - * Coding + * Coding, + * + * 参考 https://help.coding.net/docs/project/open/oauth.html#%E7%94%A8%E6%88%B7%E6%8E%88%E6%9D%83 中的说明, + * 新版的 coding API 地址需要传入用户团队名,这儿使用动态参数,方便在 request 中使用 */ CODING { @Override public String authorize() { - return "https://coding.net/oauth_authorize.html"; - } - - @Override - public String accessToken() { - return "https://coding.net/api/oauth/access_token"; - } - - @Override - public String userInfo() { - return "https://coding.net/api/account/current_user"; - } - }, - /** - * 腾讯云开发者平台(coding升级后就变成腾讯云开发者平台了) - */ - TENCENT_CLOUD { - @Override - public String authorize() { - return "https://dev.tencent.com/oauth_authorize.html"; + return "https://%s.coding.net/oauth_authorize.html"; } @Override public String accessToken() { - return "https://dev.tencent.com/api/oauth/access_token"; + return "https://%s.coding.net/api/oauth/access_token"; } @Override public String userInfo() { - return "https://dev.tencent.com/api/account/current_user"; + return "https://%s.coding.net/api/account/current_user"; } }, /** diff --git a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java index e21f923..0ad7fad 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -37,13 +37,20 @@ public class AuthBaiduRequest extends AuthDefaultRequest { return getAuthToken(response); } + /** + * https://openapi.baidu.com/rest/2.0/passport/users/getInfo?access_token=121.c86e87cc0828cc1dabb8faee540531d4.YsUIAWvYbgqVni1VhkgKgyLh8nEyELbDOEZs_OA.OgDgmA + * https://openapi.baidu.com/rest/2.0/passport/users/getInfo?access_token=121.2907d9facf9fb97adf7287fa75496eda.Y3NSjR3-3HKt1RgT0HEl7GgxRXT5gOOVdngXezY.OcC_7g + * 新旧应用返回的用户信息不一致 + * @param authToken token信息 + * @return AuthUser + */ @Override protected AuthUser getUserInfo(AuthToken authToken) { String userInfo = doGetUserInfo(authToken); JSONObject object = JSONObject.parseObject(userInfo); this.checkResponse(object); return AuthUser.builder() - .uuid(object.getString("userid")) + .uuid(object.containsKey("userid") ? object.getString("userid") : object.getString("openid")) .username(object.getString("username")) .nickname(object.getString("username")) .avatar(getAvatar(object)) @@ -77,7 +84,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest { .queryParam("client_id", this.config.getClientId()) .queryParam("client_secret", this.config.getClientSecret()) .build(); - String response = HttpUtil.get(refreshUrl); + String response = new HttpUtils(config.getHttpConfig()).get(refreshUrl); return AuthResponse.builder() .code(AuthResponseStatus.SUCCESS.getCode()) .data(this.getAuthToken(response)) diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java index 3285203..ca974a5 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java @@ -49,8 +49,8 @@ public class AuthCodingRequest extends AuthDefaultRequest { return AuthUser.builder() .uuid(object.getString("id")) .username(object.getString("name")) - .avatar("https://coding.net/" + object.getString("avatar")) - .blog("https://coding.net/" + object.getString("path")) + .avatar("https://coding.net" + object.getString("avatar")) + .blog("https://coding.net" + object.getString("path")) .nickname(object.getString("name")) .company(object.getString("company")) .location(object.getString("location")) @@ -82,7 +82,7 @@ public class AuthCodingRequest extends AuthDefaultRequest { */ @Override public String authorize(String state) { - return UrlBuilder.fromBaseUrl(source.authorize()) + return UrlBuilder.fromBaseUrl(String.format(source.authorize(), config.getCodingGroupName())) .queryParam("response_type", "code") .queryParam("client_id", config.getClientId()) .queryParam("redirect_uri", config.getRedirectUri()) @@ -90,4 +90,33 @@ public class AuthCodingRequest extends AuthDefaultRequest { .queryParam("state", getRealState(state)) .build(); } + /** + * 返回获取accessToken的url + * + * @param code 授权码 + * @return 返回获取accessToken的url + */ + @Override + public String accessTokenUrl(String code) { + return UrlBuilder.fromBaseUrl(String.format(source.accessToken(), config.getCodingGroupName())) + .queryParam("code", code) + .queryParam("client_id", config.getClientId()) + .queryParam("client_secret", config.getClientSecret()) + .queryParam("grant_type", "authorization_code") + .queryParam("redirect_uri", config.getRedirectUri()) + .build(); + } + + /** + * 返回获取userInfo的url + * + * @param authToken token + * @return 返回获取userInfo的url + */ + @Override + public String userInfoUrl(AuthToken authToken) { + return UrlBuilder.fromBaseUrl(String.format(source.userInfo(), config.getCodingGroupName())) + .queryParam("access_token", authToken.getAccessToken()) + .build(); + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java index b4e431d..fe17868 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDefaultRequest.java @@ -1,6 +1,6 @@ package me.zhyd.oauth.request; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthDefaultStateCache; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -210,7 +210,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { * @return Response */ protected String doPostAuthorizationCode(String code) { - return HttpUtil.post(accessTokenUrl(code)); + return new HttpUtils(config.getHttpConfig()).post(accessTokenUrl(code)); } /** @@ -220,7 +220,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { * @return Response */ protected String doGetAuthorizationCode(String code) { - return HttpUtil.get(accessTokenUrl(code)); + return new HttpUtils(config.getHttpConfig()).get(accessTokenUrl(code)); } /** @@ -231,7 +231,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { */ @Deprecated protected String doPostUserInfo(AuthToken authToken) { - return HttpUtil.post(userInfoUrl(authToken)); + return new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken)); } /** @@ -241,7 +241,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { * @return Response */ protected String doGetUserInfo(AuthToken authToken) { - return HttpUtil.get(userInfoUrl(authToken)); + return new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken)); } /** @@ -252,7 +252,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { */ @Deprecated protected String doPostRevoke(AuthToken authToken) { - return HttpUtil.post(revokeUrl(authToken)); + return new HttpUtils(config.getHttpConfig()).post(revokeUrl(authToken)); } /** @@ -262,7 +262,7 @@ public abstract class AuthDefaultRequest implements AuthRequest { * @return Response */ protected String doGetRevoke(AuthToken authToken) { - return HttpUtil.get(revokeUrl(authToken)); + return new HttpUtils(config.getHttpConfig()).get(revokeUrl(authToken)); } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java index af10d9a..1332e99 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java @@ -2,7 +2,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -40,7 +40,7 @@ public class AuthDingTalkRequest extends AuthDefaultRequest { String code = authToken.getAccessCode(); JSONObject param = new JSONObject(); param.put("tmp_auth_code", code); - String response = HttpUtil.post(userInfoUrl(authToken), param.toJSONString()); + String response = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), param.toJSONString()); JSONObject object = JSON.parseObject(response); if (object.getIntValue("errcode") != 0) { throw new AuthException(object.getString("errmsg")); diff --git a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java index 86461b0..6529829 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthDouyinRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -84,7 +84,7 @@ public class AuthDouyinRequest extends AuthDefaultRequest { * @return token对象 */ private AuthToken getToken(String accessTokenUrl) { - String response = HttpUtil.post(accessTokenUrl); + String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); JSONObject dataObj = object.getJSONObject("data"); diff --git a/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java index 7ecdb93..579d441 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthElemeRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; @@ -52,7 +52,7 @@ public class AuthElemeRequest extends AuthDefaultRequest { form.put("grant_type", "authorization_code"); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true); - String response = HttpUtil.post(source.accessToken(), form, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, httpHeader, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -91,7 +91,7 @@ public class AuthElemeRequest extends AuthDefaultRequest { paramsMap.put("signature", signature); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_JSON, requestId, false); - String response = HttpUtil.post(source.userInfo(), JSONObject.toJSONString(paramsMap), httpHeader); + String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), JSONObject.toJSONString(paramsMap), httpHeader); JSONObject object = JSONObject.parseObject(response); @@ -122,7 +122,7 @@ public class AuthElemeRequest extends AuthDefaultRequest { form.put("grant_type", "refresh_token"); HttpHeader httpHeader = this.buildHeader(CONTENT_TYPE_FORM, this.getRequestId(), true); - String response = HttpUtil.post(source.refresh(), form, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, httpHeader, false); JSONObject object = JSONObject.parseObject(response); diff --git a/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java b/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java index 67b3aaf..93689ed 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthFeishuRequest.java @@ -2,7 +2,6 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -13,6 +12,7 @@ import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.utils.GlobalAuthUtils; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.utils.UrlBuilder; /** @@ -36,7 +36,7 @@ public class AuthFeishuRequest extends AuthDefaultRequest { requestObject.put("app_secret", config.getClientSecret()); requestObject.put("grant_type", "authorization_code"); requestObject.put("code", authCallback.getCode()); - String response = HttpUtil.post(source.accessToken(), requestObject.toJSONString(), new HttpHeader() + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), requestObject.toJSONString(), new HttpHeader() .add("Content-Type", "application/json")); JSONObject jsonObject = JSON.parseObject(response); this.checkResponse(jsonObject); @@ -53,7 +53,7 @@ public class AuthFeishuRequest extends AuthDefaultRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { String accessToken = authToken.getAccessToken(); - String response = HttpUtil.get(source.userInfo(), null, new HttpHeader() + String response = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, new HttpHeader() .add("Content-Type", "application/json") .add("Authorization", "Bearer " + accessToken), false); JSONObject jsonObject = JSON.parseObject(response); @@ -72,7 +72,7 @@ public class AuthFeishuRequest extends AuthDefaultRequest { requestObject.put("app_secret", config.getClientSecret()); requestObject.put("grant_type", "refresh_token"); requestObject.put("refresh_token", authToken.getRefreshToken()); - String response = HttpUtil.post(source.refresh(), requestObject.toJSONString(), new HttpHeader() + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), requestObject.toJSONString(), new HttpHeader() .add("Content-Type", "application/json")); JSONObject jsonObject = JSON.parseObject(response); this.checkResponse(jsonObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java index 242db08..e3e9c63 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthGoogleRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -47,7 +47,7 @@ public class AuthGoogleRequest extends AuthDefaultRequest { protected AuthUser getUserInfo(AuthToken authToken) { HttpHeader httpHeader = new HttpHeader(); httpHeader.add("Authorization", "Bearer " + authToken.getAccessToken()); - String userInfo = HttpUtil.post(userInfoUrl(authToken), null, httpHeader); + String userInfo = new HttpUtils(config.getHttpConfig()).post(userInfoUrl(authToken), null, httpHeader); JSONObject object = JSONObject.parseObject(userInfo); this.checkResponse(object); return AuthUser.builder() diff --git a/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java index 4544a92..5fbeec3 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthHuaweiRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -52,7 +52,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest { form.put("client_secret", config.getClientSecret()); form.put("redirect_uri", config.getRedirectUri()); - String response = HttpUtil.post(source.accessToken(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false); return getAuthToken(response); } @@ -71,7 +71,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest { form.put("nsp_fmt", "JS"); form.put("nsp_svc", "OpenUP.User.getInfo"); - String response = HttpUtil.post(source.userInfo(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -103,7 +103,7 @@ public class AuthHuaweiRequest extends AuthDefaultRequest { form.put("refresh_token", authToken.getRefreshToken()); form.put("grant_type", "refresh_token"); - String response = HttpUtil.post(source.refresh(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false); return AuthResponse.builder().code(SUCCESS.getCode()).data(getAuthToken(response)).build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java b/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java index 0bc9a98..7fd18d4 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthJdRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -44,7 +44,7 @@ public class AuthJdRequest extends AuthDefaultRequest { params.put("app_secret", config.getClientSecret()); params.put("grant_type", "authorization_code"); params.put("code", authCallback.getCode()); - String response = HttpUtil.post(source.accessToken(), params, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), params, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -68,7 +68,7 @@ public class AuthJdRequest extends AuthDefaultRequest { .queryParam("timestamp", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) .queryParam("v", "2.0"); urlBuilder.queryParam("sign", GlobalAuthUtils.generateJdSignature(config.getClientSecret(), urlBuilder.getReadOnlyParams())); - String response = HttpUtil.post(urlBuilder.build(true)); + String response = new HttpUtils(config.getHttpConfig()).post(urlBuilder.build(true)); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -106,7 +106,7 @@ public class AuthJdRequest extends AuthDefaultRequest { params.put("app_secret", config.getClientSecret()); params.put("grant_type", "refresh_token"); params.put("refresh_token", oldToken.getRefreshToken()); - String response = HttpUtil.post(source.refresh(), params, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), params, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); diff --git a/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java b/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java index d15786f..2c9caa9 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthKujialeRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -90,7 +90,7 @@ public class AuthKujialeRequest extends AuthDefaultRequest { @Override public AuthUser getUserInfo(AuthToken authToken) { String openId = this.getOpenId(authToken); - String response = HttpUtil.get(UrlBuilder.fromBaseUrl(source.userInfo()) + String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl(source.userInfo()) .queryParam("access_token", authToken.getAccessToken()) .queryParam("open_id", openId) .build()); @@ -117,7 +117,7 @@ public class AuthKujialeRequest extends AuthDefaultRequest { * @return openId */ private String getOpenId(AuthToken authToken) { - String response = HttpUtil.get(UrlBuilder.fromBaseUrl("https://oauth.kujiale.com/oauth2/auth/user") + String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl("https://oauth.kujiale.com/oauth2/auth/user") .queryParam("access_token", authToken.getAccessToken()) .build()); JSONObject accessTokenObject = checkResponse(response); @@ -126,7 +126,7 @@ public class AuthKujialeRequest extends AuthDefaultRequest { @Override public AuthResponse refresh(AuthToken authToken) { - String response = HttpUtil.post(refreshTokenUrl(authToken.getRefreshToken())); + String response = new HttpUtils(config.getHttpConfig()).post(refreshTokenUrl(authToken.getRefreshToken())); return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build(); } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java index 88acfff..ba255cd 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java @@ -3,7 +3,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONPath; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; @@ -49,7 +49,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest { httpHeader.add("Connection", "Keep-Alive"); httpHeader.add("Authorization", "Bearer " + accessToken); - String response = HttpUtil.get(userInfoUrl(authToken), null, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false); JSONObject userInfoObject = JSONObject.parseObject(response); this.checkResponse(userInfoObject); @@ -128,7 +128,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest { httpHeader.add("Connection", "Keep-Alive"); httpHeader.add("Authorization", "Bearer " + accessToken); - String emailResponse = HttpUtil.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", null, httpHeader, false); + String emailResponse = new HttpUtils(config.getHttpConfig()).get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", null, httpHeader, false); JSONObject emailObj = JSONObject.parseObject(emailResponse); this.checkResponse(emailObj); @@ -181,7 +181,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest { httpHeader.add("Host", "www.linkedin.com"); httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded"); - String response = HttpUtil.post(accessTokenUrl, null, httpHeader); + String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, null, httpHeader); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java index d4e2e91..6ebff57 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMeituanRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -41,7 +41,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest { form.put("code", authCallback.getCode()); form.put("grant_type", "authorization_code"); - String response = HttpUtil.post(source.accessToken(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -60,7 +60,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest { form.put("secret", config.getClientSecret()); form.put("access_token", authToken.getAccessToken()); - String response = HttpUtil.post(source.userInfo(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.userInfo(), form, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -84,7 +84,7 @@ public class AuthMeituanRequest extends AuthDefaultRequest { form.put("refresh_token", oldToken.getRefreshToken()); form.put("grant_type", "refresh_token"); - String response = HttpUtil.post(source.refresh(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); diff --git a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java index ee85c51..878083f 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMiRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -41,7 +41,7 @@ public class AuthMiRequest extends AuthDefaultRequest { } private AuthToken getToken(String accessTokenUrl) { - String response = HttpUtil.get(accessTokenUrl); + String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl); String jsonStr = response.replace(PREFIX, Constants.EMPTY); JSONObject accessTokenObject = JSONObject.parseObject(jsonStr); @@ -88,7 +88,7 @@ public class AuthMiRequest extends AuthDefaultRequest { String emailPhoneUrl = MessageFormat.format("{0}?clientId={1}&token={2}", "https://open.account.xiaomi.com/user/phoneAndEmail", config .getClientId(), authToken.getAccessToken()); - String emailResponse = HttpUtil.get(emailPhoneUrl); + String emailResponse = new HttpUtils(config.getHttpConfig()).get(emailPhoneUrl); JSONObject userEmailPhone = JSONObject.parseObject(emailResponse); if (!"error".equalsIgnoreCase(userEmailPhone.getString("result"))) { JSONObject emailPhone = userEmailPhone.getJSONObject("data"); diff --git a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java index c8a132d..61390fb 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthMicrosoftRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.util.MapUtil; @@ -47,12 +47,10 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest { */ private AuthToken getToken(String accessTokenUrl) { HttpHeader httpHeader = new HttpHeader(); - httpHeader.add("Host", "https://login.microsoftonline.com"); - httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded"); Map form = MapUtil.parseStringToMap(accessTokenUrl, false); - String response = HttpUtil.post(accessTokenUrl, form, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); @@ -86,7 +84,7 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest { HttpHeader httpHeader = new HttpHeader(); httpHeader.add("Authorization", jwt); - String userInfo = HttpUtil.get(userInfoUrl(authToken), null, httpHeader, false); + String userInfo = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false); JSONObject object = JSONObject.parseObject(userInfo); this.checkResponse(object); return AuthUser.builder() @@ -129,7 +127,7 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest { .queryParam("client_id", config.getClientId()) .queryParam("redirect_uri", config.getRedirectUri()) .queryParam("response_mode", "query") - .queryParam("scope", "offline_access%20user.read%20mail.read") + .queryParam("scope", "offline_access user.read mail.read") .queryParam("state", getRealState(state)) .build(); } @@ -147,7 +145,7 @@ public class AuthMicrosoftRequest extends AuthDefaultRequest { .queryParam("client_id", config.getClientId()) .queryParam("client_secret", config.getClientSecret()) .queryParam("grant_type", "authorization_code") - .queryParam("scope", "user.read%20mail.read") + .queryParam("scope", "offline_access user.read mail.read") .queryParam("redirect_uri", config.getRedirectUri()) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java index 6efadd5..c3fd0b5 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.enums.AuthUserGender; @@ -48,7 +48,7 @@ public class AuthPinterestRequest extends AuthDefaultRequest { protected AuthUser getUserInfo(AuthToken authToken) { String userinfoUrl = userInfoUrl(authToken); // TODO: 是否需要 .setFollowRedirects(true) - String response = HttpUtil.get(userinfoUrl); + String response = new HttpUtils(config.getHttpConfig()).get(userinfoUrl); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); JSONObject userObj = object.getJSONObject("data"); diff --git a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java index 0107345..f2c1b77 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthQqRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -42,7 +42,7 @@ public class AuthQqRequest extends AuthDefaultRequest { @Override public AuthResponse refresh(AuthToken authToken) { - String response = HttpUtil.get(refreshTokenUrl(authToken.getRefreshToken())); + String response = new HttpUtils(config.getHttpConfig()).get(refreshTokenUrl(authToken.getRefreshToken())); return AuthResponse.builder().code(AuthResponseStatus.SUCCESS.getCode()).data(getAuthToken(response)).build(); } @@ -80,7 +80,7 @@ public class AuthQqRequest extends AuthDefaultRequest { * @return openId */ private String getOpenId(AuthToken authToken) { - String response = HttpUtil.get(UrlBuilder.fromBaseUrl("https://graph.qq.com/oauth2.0/me") + String response = new HttpUtils(config.getHttpConfig()).get(UrlBuilder.fromBaseUrl("https://graph.qq.com/oauth2.0/me") .queryParam("access_token", authToken.getAccessToken()) .queryParam("unionid", config.isUnionId() ? 1 : 0) .build()); diff --git a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java index 889a418..e900f79 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java @@ -2,7 +2,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.enums.AuthUserGender; @@ -64,7 +64,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest { } private AuthToken getToken(String url) { - String response = HttpUtil.post(url); + String response = new HttpUtils(config.getHttpConfig()).post(url); JSONObject jsonObject = JSONObject.parseObject(response); if (jsonObject.containsKey("error")) { throw new AuthException("Failed to get token from Renren: " + jsonObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java index c98be60..27c3f28 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.util.MapUtil; @@ -40,7 +40,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest { Map form = MapUtil.parseStringToMap(accessTokenUrl, false); HttpHeader httpHeader = new HttpHeader(); httpHeader.add(Constants.CONTENT_TYPE, "application/x-www-form-urlencoded"); - String response = HttpUtil.post(accessTokenUrl, form, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).post(accessTokenUrl, form, httpHeader, false); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); @@ -58,7 +58,7 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest { .queryParam("site", "stackoverflow") .queryParam("key", this.config.getStackOverflowKey()) .build(); - String response = HttpUtil.get(userInfoUrl); + String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); JSONObject userObj = object.getJSONArray("items").getJSONObject(0); diff --git a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java index ebfd2a2..cb6a743 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTeambitionRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -45,7 +45,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest { form.put("code", authCallback.getCode()); form.put("grant_type", "code"); - String response = HttpUtil.post(source.accessToken(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, false); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); @@ -63,7 +63,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest { HttpHeader httpHeader = new HttpHeader(); httpHeader.add("Authorization", "OAuth2 " + accessToken); - String response = HttpUtil.get(source.userInfo(), null, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).get(source.userInfo(), null, httpHeader, false); JSONObject object = JSONObject.parseObject(response); this.checkResponse(object); @@ -92,7 +92,7 @@ public class AuthTeambitionRequest extends AuthDefaultRequest { Map form = new HashMap<>(2); form.put("_userId", uid); form.put("refresh_token", refreshToken); - String response = HttpUtil.post(source.refresh(), form, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.refresh(), form, false); JSONObject refreshTokenObject = JSONObject.parseObject(response); this.checkResponse(refreshTokenObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java deleted file mode 100644 index 1f5ea31..0000000 --- a/src/main/java/me/zhyd/oauth/request/AuthTencentCloudRequest.java +++ /dev/null @@ -1,93 +0,0 @@ -package me.zhyd.oauth.request; - -import com.alibaba.fastjson.JSONObject; -import me.zhyd.oauth.cache.AuthStateCache; -import me.zhyd.oauth.config.AuthConfig; -import me.zhyd.oauth.config.AuthDefaultSource; -import me.zhyd.oauth.enums.AuthUserGender; -import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthCallback; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; -import me.zhyd.oauth.utils.UrlBuilder; - -/** - * 腾讯云登录 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @since 1.0.0 - */ -public class AuthTencentCloudRequest extends AuthDefaultRequest { - - public AuthTencentCloudRequest(AuthConfig config) { - super(config, AuthDefaultSource.TENCENT_CLOUD); - } - - public AuthTencentCloudRequest(AuthConfig config, AuthStateCache authStateCache) { - super(config, AuthDefaultSource.TENCENT_CLOUD, authStateCache); - } - - @Override - protected AuthToken getAccessToken(AuthCallback authCallback) { - String response = doGetAuthorizationCode(authCallback.getCode()); - JSONObject accessTokenObject = JSONObject.parseObject(response); - this.checkResponse(accessTokenObject); - return AuthToken.builder() - .accessToken(accessTokenObject.getString("access_token")) - .expireIn(accessTokenObject.getIntValue("expires_in")) - .refreshToken(accessTokenObject.getString("refresh_token")) - .build(); - } - - @Override - protected AuthUser getUserInfo(AuthToken authToken) { - String response = doGetUserInfo(authToken); - JSONObject object = JSONObject.parseObject(response); - this.checkResponse(object); - - object = object.getJSONObject("data"); - return AuthUser.builder() - .uuid(object.getString("id")) - .username(object.getString("name")) - .avatar("https://dev.tencent.com/" + object.getString("avatar")) - .blog("https://dev.tencent.com/" + object.getString("path")) - .nickname(object.getString("name")) - .company(object.getString("company")) - .location(object.getString("location")) - .gender(AuthUserGender.getRealGender(object.getString("sex"))) - .email(object.getString("email")) - .remark(object.getString("slogan")) - .token(authToken) - .source(source.toString()) - .build(); - } - - /** - * 检查响应内容是否正确 - * - * @param object 请求响应内容 - */ - private void checkResponse(JSONObject object) { - if (object.getIntValue("code") != 0) { - throw new AuthException(object.getString("msg")); - } - } - - /** - * 返回带{@code state}参数的授权url,授权回调时会带上这个{@code state} - * - * @param state state 验证授权流程的参数,可以防止csrf - * @return 返回授权地址 - * @since 1.9.3 - */ - @Override - public String authorize(String state) { - return UrlBuilder.fromBaseUrl(source.authorize()) - .queryParam("response_type", "code") - .queryParam("client_id", config.getClientId()) - .queryParam("redirect_uri", config.getRedirectUri()) - .queryParam("scope", "user") - .queryParam("state", getRealState(state)) - .build(); - } -} diff --git a/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java b/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java index 3b29800..65ba5ca 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthTwitterRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.constants.Constants; import com.xkcoding.http.support.HttpHeader; import com.xkcoding.http.util.MapUtil; @@ -72,7 +72,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest { httpHeader.add("User-Agent", "themattharris' HTTP Client"); httpHeader.add("Host", "api.twitter.com"); httpHeader.add("Accept", "*/*"); - String requestToken = HttpUtil.post(baseUrl, null, httpHeader); + String requestToken = new HttpUtils(config.getHttpConfig()).post(baseUrl, null, httpHeader); Map res = MapUtil.parseStringToMap(requestToken, false); @@ -104,7 +104,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest { Map form = new HashMap<>(1); form.put("oauth_verifier", authCallback.getOauth_verifier()); - String response = HttpUtil.post(source.accessToken(), form, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).post(source.accessToken(), form, httpHeader, false); Map requestToken = MapUtil.parseStringToMap(response, false); @@ -134,7 +134,7 @@ public class AuthTwitterRequest extends AuthDefaultRequest { HttpHeader httpHeader = new HttpHeader(); httpHeader.add("Authorization", header); - String response = HttpUtil.get(userInfoUrl(authToken), null, httpHeader, false); + String response = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false); JSONObject userInfo = JSONObject.parseObject(response); return AuthUser.builder() diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java index 93fdade..389be7a 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -148,7 +148,7 @@ public class AuthWeChatEnterpriseRequest extends AuthDefaultRequest { .queryParam("access_token", accessToken) .queryParam("userid", userId) .build(); - return HttpUtil.get(userDetailUrl); + return new HttpUtils(config.getHttpConfig()).get(userDetailUrl); } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java index 29ab5ec..8b78bd1 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatMpRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -94,7 +94,7 @@ public class AuthWeChatMpRequest extends AuthDefaultRequest { * @return token对象 */ private AuthToken getToken(String accessTokenUrl) { - String response = HttpUtil.get(accessTokenUrl); + String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java index 241b9c0..e04bda9 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatOpenRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; @@ -93,7 +93,7 @@ public class AuthWeChatOpenRequest extends AuthDefaultRequest { * @return token对象 */ private AuthToken getToken(String accessTokenUrl) { - String response = HttpUtil.get(accessTokenUrl); + String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl); JSONObject accessTokenObject = JSONObject.parseObject(response); this.checkResponse(accessTokenObject); diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java index ecc3401..362645b 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java @@ -1,7 +1,7 @@ package me.zhyd.oauth.request; import com.alibaba.fastjson.JSONObject; -import com.xkcoding.http.HttpUtil; +import me.zhyd.oauth.utils.HttpUtils; import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; @@ -58,7 +58,7 @@ public class AuthWeiboRequest extends AuthDefaultRequest { HttpHeader httpHeader = new HttpHeader(); httpHeader.add("Authorization", "OAuth2 " + oauthParam); httpHeader.add("API-RemoteIP", IpUtils.getLocalIp()); - String userInfo = HttpUtil.get(userInfoUrl(authToken), null, httpHeader, false); + String userInfo = new HttpUtils(config.getHttpConfig()).get(userInfoUrl(authToken), null, httpHeader, false); JSONObject object = JSONObject.parseObject(userInfo); if (object.containsKey("error")) { throw new AuthException(object.getString("error")); diff --git a/src/main/java/me/zhyd/oauth/utils/AuthChecker.java b/src/main/java/me/zhyd/oauth/utils/AuthChecker.java index 4761d2c..703729e 100644 --- a/src/main/java/me/zhyd/oauth/utils/AuthChecker.java +++ b/src/main/java/me/zhyd/oauth/utils/AuthChecker.java @@ -35,6 +35,9 @@ public class AuthChecker { if (isSupported && AuthDefaultSource.WECHAT_ENTERPRISE == source) { isSupported = StringUtils.isNotEmpty(config.getAgentId()); } + if (isSupported && AuthDefaultSource.CODING == source) { + isSupported = StringUtils.isNotEmpty(config.getCodingGroupName()); + } return isSupported; } diff --git a/src/main/java/me/zhyd/oauth/utils/HttpUtils.java b/src/main/java/me/zhyd/oauth/utils/HttpUtils.java new file mode 100644 index 0000000..f541490 --- /dev/null +++ b/src/main/java/me/zhyd/oauth/utils/HttpUtils.java @@ -0,0 +1,105 @@ +package me.zhyd.oauth.utils; + +import com.xkcoding.http.HttpUtil; +import com.xkcoding.http.config.HttpConfig; +import com.xkcoding.http.support.HttpHeader; + +import java.util.Map; + +/** + * HttpUtil 工具,统一处理 http 请求,方便对 simple-http 做定制 + * @author yadong.zhang (yadong.zhang0415(a)gmail.com) + * @version 1.0.0 + * @since 1.0.0 + */ +public class HttpUtils { + + public HttpUtils(HttpConfig config) { + HttpUtil.setConfig(config); + } + + public HttpUtils() { + } + + + /** + * GET 请求 + * + * @param url URL + * @return 结果 + */ + public String get(String url) { + return HttpUtil.get(url); + } + + /** + * GET 请求 + * + * @param url URL + * @param params 参数 + * @param header 请求头 + * @param encode 是否需要 url encode + * @return 结果 + */ + public String get(String url, Map params, HttpHeader header, boolean encode) { + return HttpUtil.get(url, params, header, encode); + } + + /** + * POST 请求 + * + * @param url URL + * @return 结果 + */ + public String post(String url) { + return HttpUtil.post(url); + } + + /** + * POST 请求 + * + * @param url URL + * @param data JSON 参数 + * @return 结果 + */ + public String post(String url, String data) { + return HttpUtil.post(url, data); + } + + /** + * POST 请求 + * + * @param url URL + * @param data JSON 参数 + * @param header 请求头 + * @return 结果 + */ + public String post(String url, String data, HttpHeader header) { + return HttpUtil.post(url, data, header); + } + + /** + * POST 请求 + * + * @param url URL + * @param params form 参数 + * @param encode 是否需要 url encode + * @return 结果 + */ + public String post(String url, Map params, boolean encode) { + return HttpUtil.post(url, params, encode); + } + + /** + * POST 请求 + * + * @param url URL + * @param params form 参数 + * @param header 请求头 + * @param encode 是否需要 url encode + * @return 结果 + */ + public String post(String url, Map params, HttpHeader header, boolean encode) { + return HttpUtil.post(url, params, header, encode); + } +} -- GitLab