Commit cba9c609d74c91663db46d8ece860f8e2d1fbe7b
1 parent
de210341
code review 社交登陆的代码
Showing
4 changed files
with
35 additions
and
29 deletions
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 分钟 | ... | ... |