From a81a8b2b69198ce873eccf9018308b1a48ca1d4a Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Mon, 20 Aug 2018 12:11:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96#718=E6=89=80=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../open/api/WxOpenComponentService.java | 9 +++-- .../api/impl/WxOpenComponentServiceImpl.java | 39 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java index 42273951..bf5cc6ff 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java @@ -1,5 +1,7 @@ package me.chanjar.weixin.open.api; +import java.util.List; + import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import me.chanjar.weixin.common.error.WxErrorException; @@ -11,8 +13,6 @@ import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerOptionResult; import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; -import java.util.List; - /** * @author 007 */ @@ -53,12 +53,13 @@ public interface WxOpenComponentService { * 获取用户授权页URL(来路URL和成功跳转URL 的域名都需要为三方平台设置的 登录授权的发起页域名) */ String getPreAuthUrl(String redirectURI) throws WxErrorException; + /** * authType 要授权的帐号类型:1则商户点击链接后,手机端仅展示公众号、2表示仅展示小程序,3表示公众号和小程序都展示。如果为未指定,则默认小程序和公众号都展示。第三方平台开发者可以使用本字段来控制授权的帐号类型。 * bizAppid 指定授权唯一的小程序或公众号 * 注:auth_type、biz_appid两个字段互斥。 - */ - String getPreAuthUrl(String redirectURI,String authType, String bizAppid) throws WxErrorException; + */ + String getPreAuthUrl(String redirectURI, String authType, String bizAppid) throws WxErrorException; String route(WxOpenXmlMessage wxMessage) throws WxErrorException; diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java index a069ddd9..69004659 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java @@ -1,5 +1,13 @@ package me.chanjar.weixin.open.api.impl; +import java.util.Hashtable; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.google.gson.JsonObject; @@ -24,13 +32,6 @@ import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerOptionResult; import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Hashtable; -import java.util.List; -import java.util.Map; /** * @author 007 @@ -148,6 +149,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { private String get(String uri) throws WxErrorException { return get(uri, "component_access_token"); } + private String get(String uri, String accessTokenKey) throws WxErrorException { String componentAccessToken = getComponentAccessToken(false); String uriWithComponentAccessToken = uri + (uri.contains("?") ? "&" : "?") + accessTokenKey + "=" + componentAccessToken; @@ -177,23 +179,28 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { @Override public String getPreAuthUrl(String redirectURI) throws WxErrorException { - return getPreAuthUrl(redirectURI,null, null); + return getPreAuthUrl(redirectURI, null, null); } - @Override - public String getPreAuthUrl(String redirectURI,String authType, String bizAppid) throws WxErrorException { + @Override + public String getPreAuthUrl(String redirectURI, String authType, String bizAppid) throws WxErrorException { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("component_appid", getWxOpenConfigStorage().getComponentAppId()); String responseContent = post(API_CREATE_PREAUTHCODE_URL, jsonObject.toString()); jsonObject = WxGsonBuilder.create().fromJson(responseContent, JsonObject.class); - String preAuthUrl = String.format(COMPONENT_LOGIN_PAGE_URL, getWxOpenConfigStorage().getComponentAppId(), jsonObject.get("pre_auth_code").getAsString(), URIUtil.encodeURIComponent(redirectURI)); - if(StringUtils.isNotEmpty(authType)){ - preAuthUrl = preAuthUrl + "&auth_type=" + authType; + + StringBuilder preAuthUrl = new StringBuilder(String.format(COMPONENT_LOGIN_PAGE_URL, + getWxOpenConfigStorage().getComponentAppId(), + jsonObject.get("pre_auth_code").getAsString(), + URIUtil.encodeURIComponent(redirectURI))); + if (StringUtils.isNotEmpty(authType)) { + preAuthUrl.append("&auth_type=").append(authType); } - if(StringUtils.isNotEmpty(bizAppid)){ - preAuthUrl = preAuthUrl + "&biz_appid=" + bizAppid; + if (StringUtils.isNotEmpty(bizAppid)) { + preAuthUrl.append("&biz_appid=").append(bizAppid); } - return preAuthUrl; + + return preAuthUrl.toString(); }