From 415c7035394ae1f1f7391c77ecd386860bbbd488 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Sun, 4 Aug 2024 15:33:49 +0800 Subject: [PATCH] =?UTF-8?q?:hankey:=20=E4=BF=AE=E5=A4=8D=20twitter=20?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=9C=A8=20Java11=20=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8B=E7=99=BB=E5=BD=95=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82[#174](https://github.com/justauth/JustAuth/i?= =?UTF-8?q?ssues/174)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthWeChatEnterpriseQrcodeV2Request.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseQrcodeV2Request.java diff --git a/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseQrcodeV2Request.java b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseQrcodeV2Request.java new file mode 100644 index 00000000..3bbbd8c4 --- /dev/null +++ b/src/main/java/me/zhyd/oauth/request/AuthWeChatEnterpriseQrcodeV2Request.java @@ -0,0 +1,51 @@ +package me.zhyd.oauth.request; + +import me.zhyd.oauth.cache.AuthStateCache; +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthDefaultSource; +import me.zhyd.oauth.enums.AuthResponseStatus; +import me.zhyd.oauth.exception.AuthException; +import me.zhyd.oauth.utils.GlobalAuthUtils; +import me.zhyd.oauth.utils.StringUtils; +import me.zhyd.oauth.utils.UrlBuilder; + +/** + *

+ * 新版企业微信 Web 登录,参考 https://developer.work.weixin.qq.com/document/path/98152 + *

+ * + * @author yadong.zhang (yadong.zhang0415(a)gmail.com) + * @since 1.16.7 + */ +public class AuthWeChatEnterpriseQrcodeV2Request extends AbstractAuthWeChatEnterpriseRequest { + public AuthWeChatEnterpriseQrcodeV2Request(AuthConfig config) { + super(config, AuthDefaultSource.WECHAT_ENTERPRISE_V2); + } + + public AuthWeChatEnterpriseQrcodeV2Request(AuthConfig config, AuthStateCache authStateCache) { + super(config, AuthDefaultSource.WECHAT_ENTERPRISE_V2, authStateCache); + } + + @Override + public String authorize(String state) { + return UrlBuilder.fromBaseUrl(source.authorize()) + .queryParam("login_type", config.getLoginType()) + // 登录类型为企业自建应用/服务商代开发应用时填企业 CorpID,第三方登录时填登录授权 SuiteID + .queryParam("appid", config.getClientId()) + // 企业自建应用/服务商代开发应用 AgentID,当login_type=CorpApp时填写 + .queryParam("agentid", config.getAgentId()) + .queryParam("redirect_uri", GlobalAuthUtils.urlEncode(config.getRedirectUri())) + .queryParam("state", getRealState(state)) + .queryParam("lang", config.getLang()) + .build() + .concat("#wechat_redirect"); + } + + @Override + protected void checkConfig(AuthConfig config) { + super.checkConfig(config); + if ("CorpApp".equals(config.getLoginType()) && StringUtils.isEmpty(config.getAgentId())) { + throw new AuthException(AuthResponseStatus.ILLEGAL_WECHAT_AGENT_ID, source); + } + } +}