From 0eb474d31923116c7f7a6c5721b6451b5e62a91c Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 25 Jul 2021 21:33:20 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20#2207=20=E3=80=90=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E5=A2=9E=E5=8A=A0=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/chanjar/weixin/cp/api/WxCpService.java | 8 ++++++++ .../weixin/cp/api/impl/BaseWxCpServiceImpl.java | 13 +++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java index 81d8f20c4..345b3bb34 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java @@ -287,6 +287,14 @@ public interface WxCpService extends WxService { */ void setWxCpConfigStorage(WxCpConfigStorage wxConfigProvider); + /** + * 构造扫码登录链接 - 构造独立窗口登录二维码 + * @param redirectUri 重定向地址,需要进行UrlEncode + * @param state 用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议企业带上该参数,可设置为简单的随机数加session进行校验 + * @return . + */ + String buildQrConnectUrl(String redirectUri, String state); + /** * 获取部门相关接口的服务类对象 * diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpServiceImpl.java index 8c7017821..0a06571c9 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpServiceImpl.java @@ -17,15 +17,13 @@ import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.util.DataUtils; import me.chanjar.weixin.common.util.RandomUtils; import me.chanjar.weixin.common.util.crypto.SHA1; -import me.chanjar.weixin.common.util.http.RequestExecutor; -import me.chanjar.weixin.common.util.http.RequestHttp; -import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; -import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor; +import me.chanjar.weixin.common.util.http.*; import me.chanjar.weixin.common.util.json.GsonParser; import me.chanjar.weixin.cp.api.*; import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult; import me.chanjar.weixin.cp.bean.WxCpProviderToken; import me.chanjar.weixin.cp.config.WxCpConfigStorage; +import org.apache.commons.lang3.StringUtils; import java.io.File; import java.io.IOException; @@ -394,6 +392,13 @@ public abstract class BaseWxCpServiceImpl implements WxCpService, RequestH return get(url, null); } + @Override + public String buildQrConnectUrl(String redirectUri, String state) { + return String.format("https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=%s&agentid=%s&redirect_uri=%s&state=%s", + this.configStorage.getCorpId(), this.configStorage.getAgentId(), + URIUtil.encodeURIComponent(redirectUri), StringUtils.trimToEmpty(state)); + } + public File getTmpDirFile() { return this.tmpDirFile; }