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 4 import me.zhyd.oauth.model.AuthToken;
5 5  
6 6 /**
  7 + * TODO @timfruit:类注释
7 8 * @author timfruit
8 9 * @date 2021-10-29
9 10 */
... ... @@ -12,10 +13,10 @@ import me.zhyd.oauth.model.AuthToken;
12 13 @NoArgsConstructor
13 14 @AllArgsConstructor
14 15 public class AuthExtendToken extends AuthToken {
  16 +
15 17 /**
16 18 * 微信小程序 会话密钥
17 19 */
18 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 11 import me.zhyd.oauth.utils.HttpUtils;
12 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 20 * @author timfruit
18 21 * @date 2021-10-29
19 22 */
20 23 public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
  24 +
21 25 public AuthWeChatMiniProgramRequest(AuthConfig config) {
22 26 super(config, AuthExtendSource.WECHAT_MINI_PROGRAM);
23 27 }
... ... @@ -30,11 +34,11 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
30 34 protected AuthToken getAccessToken(AuthCallback authCallback) {
31 35 // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
32 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 39 this.checkResponse(accessTokenObject);
36 40  
37   - AuthExtendToken token=new AuthExtendToken();
  41 + AuthExtendToken token = new AuthExtendToken();
38 42 token.setMiniSessionKey(accessTokenObject.getString("session_key"));
39 43 token.setOpenId(accessTokenObject.getString("openid"));
40 44 token.setUnionId(accessTokenObject.getString("unionid"));
... ... @@ -62,16 +66,16 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
62 66 */
63 67 private void checkResponse(JSONObject object) {
64 68 int code = object.getIntValue("errcode");
65   - if(code != 0){
  69 + if(code != 0){ // TODO @timfruit:if (code != 0) { ,注意空格
66 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 77 * @param code 授权码
74   - * @return 返回获取accessToken的url
  78 + * @return 返回获取 accessToken 的 url
75 79 */
76 80 @Override
77 81 protected String accessTokenUrl(String code) {
... ... @@ -82,4 +86,5 @@ public class AuthWeChatMiniProgramRequest extends AuthDefaultRequest {
82 86 .queryParam("grant_type", "authorization_code")
83 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 18 @AllArgsConstructor
19 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 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 145 justauth:
146 146 enabled: true
147 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 148 WECHAT_MP: # 微信公众平台 - 移动端H5 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
162 149 client-id: wxa5a05b85ac361f96
163 150 client-secret: 247073c7cebb67f27f0e769195c2a57e
... ... @@ -174,4 +161,4 @@ justauth:
174 161 cache:
175 162 type: REDIS
176 163 prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
177   - timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
178 164 \ No newline at end of file
  165 + timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
... ...