Commit cba9c609d74c91663db46d8ece860f8e2d1fbe7b

Authored by YunaiV
1 parent de210341

code review 社交登陆的代码

yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthExtendToken.java
@@ -4,6 +4,7 @@ import lombok.*; @@ -4,6 +4,7 @@ import lombok.*;
4 import me.zhyd.oauth.model.AuthToken; 4 import me.zhyd.oauth.model.AuthToken;
5 5
6 /** 6 /**
  7 + * TODO @timfruit:类注释
7 * @author timfruit 8 * @author timfruit
8 * @date 2021-10-29 9 * @date 2021-10-29
9 */ 10 */
@@ -12,10 +13,10 @@ import me.zhyd.oauth.model.AuthToken; @@ -12,10 +13,10 @@ import me.zhyd.oauth.model.AuthToken;
12 @NoArgsConstructor 13 @NoArgsConstructor
13 @AllArgsConstructor 14 @AllArgsConstructor
14 public class AuthExtendToken extends AuthToken { 15 public class AuthExtendToken extends AuthToken {
  16 +
15 /** 17 /**
16 * 微信小程序 会话密钥 18 * 微信小程序 会话密钥
17 */ 19 */
18 private String miniSessionKey; 20 private String miniSessionKey;
19 21
20 -  
21 } 22 }
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/compent/justauth/AuthWeChatMiniProgramRequest.java
@@ -11,13 +11,17 @@ import me.zhyd.oauth.request.AuthDefaultRequest; @@ -11,13 +11,17 @@ import me.zhyd.oauth.request.AuthDefaultRequest;
11 import me.zhyd.oauth.utils.HttpUtils; 11 import me.zhyd.oauth.utils.HttpUtils;
12 import me.zhyd.oauth.utils.UrlBuilder; 12 import me.zhyd.oauth.utils.UrlBuilder;
13 13
  14 +// TODO @timfruit:新建一个 yudao-spring-boot-starter-biz-social 包,把这个拓展拿进去哈。另外,可以思考下。
  15 +// 1. application-local.yaml 的配置里,justauth.extend.enum-class 能否不配置,而是自动配置好
  16 +// 2. application-local.yaml 的配置里,justauth.extend.extend.config.WECHAT_MINI_PROGRAM 有办法和 justauth.type.WECHAT_MP 持平
14 /** 17 /**
15 - * 微信小程序 18 + * 微信小程序登陆
16 * 19 *
17 * @author timfruit 20 * @author timfruit
18 * @date 2021-10-29 21 * @date 2021-10-29
19 */ 22 */
20 public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { 23 public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
  24 +
21 public AuthWeChatMiniProgramRequest(AuthConfig config) { 25 public AuthWeChatMiniProgramRequest(AuthConfig config) {
22 super(config, AuthExtendSource.WECHAT_MINI_PROGRAM); 26 super(config, AuthExtendSource.WECHAT_MINI_PROGRAM);
23 } 27 }
@@ -30,11 +34,11 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { @@ -30,11 +34,11 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
30 protected AuthToken getAccessToken(AuthCallback authCallback) { 34 protected AuthToken getAccessToken(AuthCallback authCallback) {
31 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html 35 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
32 String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl(authCallback.getCode())); 36 String response = new HttpUtils(config.getHttpConfig()).get(accessTokenUrl(authCallback.getCode()));
33 - JSONObject accessTokenObject = JSONObject.parseObject(response); 37 + JSONObject accessTokenObject = JSONObject.parseObject(response); // TODO @timfruit:使用 JsonUtils,项目尽量避免直接使用某个 json 库
34 38
35 this.checkResponse(accessTokenObject); 39 this.checkResponse(accessTokenObject);
36 40
37 - AuthExtendToken token=new AuthExtendToken(); 41 + AuthExtendToken token = new AuthExtendToken();
38 token.setMiniSessionKey(accessTokenObject.getString("session_key")); 42 token.setMiniSessionKey(accessTokenObject.getString("session_key"));
39 token.setOpenId(accessTokenObject.getString("openid")); 43 token.setOpenId(accessTokenObject.getString("openid"));
40 token.setUnionId(accessTokenObject.getString("unionid")); 44 token.setUnionId(accessTokenObject.getString("unionid"));
@@ -62,16 +66,16 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { @@ -62,16 +66,16 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
62 */ 66 */
63 private void checkResponse(JSONObject object) { 67 private void checkResponse(JSONObject object) {
64 int code = object.getIntValue("errcode"); 68 int code = object.getIntValue("errcode");
65 - if(code != 0){ 69 + if(code != 0){ // TODO @timfruit:if (code != 0) { ,注意空格
66 throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg")); 70 throw new AuthException(object.getIntValue("errcode"), object.getString("errmsg"));
67 } 71 }
68 } 72 }
69 73
70 /** 74 /**
71 - * 返回获取accessToken的url 75 + * 返回获取 accessToken 的 url
72 * 76 *
73 * @param code 授权码 77 * @param code 授权码
74 - * @return 返回获取accessToken的url 78 + * @return 返回获取 accessToken 的 url
75 */ 79 */
76 @Override 80 @Override
77 protected String accessTokenUrl(String code) { 81 protected String accessTokenUrl(String code) {
@@ -82,4 +86,5 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest { @@ -82,4 +86,5 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
82 .queryParam("grant_type", "authorization_code") 86 .queryParam("grant_type", "authorization_code")
83 .build(); 87 .build();
84 } 88 }
  89 +
85 } 90 }
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/social/SysSocialTypeEnum.java
@@ -18,24 +18,37 @@ import java.util.List; @@ -18,24 +18,37 @@ import java.util.List;
18 @AllArgsConstructor 18 @AllArgsConstructor
19 public enum SysSocialTypeEnum implements IntArrayValuable { 19 public enum SysSocialTypeEnum implements IntArrayValuable {
20 20
21 - GITEE(10, "GITEE"), // https://gitee.com/api/v5/oauth_doc#/  
22 - DINGTALK(20, "DINGTALK"), // https://developers.dingtalk.com/document/app/obtain-identity-credentials 21 + /**
  22 + * Gitee
  23 + * 文档链接:https://gitee.com/api/v5/oauth_doc#/
  24 + */
  25 + GITEE(10, "GITEE"),
  26 + /**
  27 + * 钉钉
  28 + * 文档链接:https://developers.dingtalk.com/document/app/obtain-identity-credentials
  29 + */
  30 + DINGTALK(20, "DINGTALK"),
  31 +
23 /** 32 /**
24 * 企业微信 33 * 企业微信
  34 + * 文档链接:https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html
25 */ 35 */
26 - WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"), // https://xkcoding.com/2019/08/06/use-justauth-integration-wechat-enterprise.html 36 + WECHAT_ENTERPRISE(30, "WECHAT_ENTERPRISE"),
27 /** 37 /**
28 - * 微信公众平台 - 移动端H5 38 + * 微信公众平台 - 移动端 H5
  39 + * 文档链接:https://www.cnblogs.com/juewuzhe/p/11905461.html
29 */ 40 */
30 - WECHAT_MP(31, "WECHAT_MP"), // https://www.cnblogs.com/juewuzhe/p/11905461.html 41 + WECHAT_MP(31, "WECHAT_MP"),
31 /** 42 /**
32 - * 微信开放平台 - 网站应用 pc端扫码授权登录 43 + * 微信开放平台 - 网站应用 PC 端扫码授权登录
  44 + * 文档链接:https://justauth.wiki/guide/oauth/wechat_open/#_2-申请开发者资质认证
33 */ 45 */
34 - WECHAT_OPEN(32, "WECHAT_OPEN"), // https://justauth.wiki/guide/oauth/wechat_open/#_2-%E7%94%B3%E8%AF%B7%E5%BC%80%E5%8F%91%E8%80%85%E8%B5%84%E8%B4%A8%E8%AE%A4%E8%AF%81 46 + WECHAT_OPEN(32, "WECHAT_OPEN"),
35 /** 47 /**
36 * 微信小程序 48 * 微信小程序
  49 + * 文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
37 */ 50 */
38 - WECHAT_MINI_PROGRAM(33, "WECHAT_MINI_PROGRAM"), // https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 51 + WECHAT_MINI_PROGRAM(33, "WECHAT_MINI_PROGRAM"),
39 ; 52 ;
40 53
41 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSocialTypeEnum::getType).toArray(); 54 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSocialTypeEnum::getType).toArray();
yudao-user-server/src/main/resources/application-local.yaml
@@ -145,19 +145,6 @@ yudao: @@ -145,19 +145,6 @@ yudao:
145 justauth: 145 justauth:
146 enabled: true 146 enabled: true
147 type: 147 type:
148 - GITEE: # Gitee  
149 - client-id: ee61f0374a4c6c404a8717094caa7a410d76950e45ff60348015830c519ba5c1  
150 - client-secret: 7c044a5671be3b051414db0cf2cec6ad702dd298d2416ba24ceaf608e6fa26f9  
151 - ignore-check-redirect-uri: true  
152 - DINGTALK: # 钉钉  
153 - client-id: dingvrnreaje3yqvzhxg  
154 - client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI  
155 - ignore-check-redirect-uri: true  
156 - WECHAT_ENTERPRISE: # 企业微信  
157 - client-id: wwd411c69a39ad2e54  
158 - client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw  
159 - agent-id: 1000004  
160 - ignore-check-redirect-uri: true  
161 WECHAT_MP: # 微信公众平台 - 移动端H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 148 WECHAT_MP: # 微信公众平台 - 移动端H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
162 client-id: wxa5a05b85ac361f96 149 client-id: wxa5a05b85ac361f96
163 client-secret: 247073c7cebb67f27f0e769195c2a57e 150 client-secret: 247073c7cebb67f27f0e769195c2a57e
@@ -174,4 +161,4 @@ justauth: @@ -174,4 +161,4 @@ justauth:
174 cache: 161 cache:
175 type: REDIS 162 type: REDIS
176 prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: 163 prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
177 - timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟  
178 \ No newline at end of file 164 \ No newline at end of file
  165 + timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟