From 2c2ed5d60cd7ba7a65137e1a01991a5a35b4dab1 Mon Sep 17 00:00:00 2001 From: 007gzs <007gzs@gmail.com> Date: Sun, 25 Mar 2018 23:30:18 +0800 Subject: [PATCH] =?UTF-8?q?#513=20=E4=BF=AE=E5=A4=8D=E5=BC=80=E6=94=BE?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=B0=8F=E7=A8=8B=E5=BA=8Fjscode2session=20?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binarywang/wx/miniapp/api/WxMaService.java | 8 ++++++++ .../wx/miniapp/api/WxMaUserService.java | 1 - .../wx/miniapp/api/impl/WxMaServiceImpl.java | 16 ++++++++++++++++ .../wx/miniapp/api/impl/WxMaUserServiceImpl.java | 11 +---------- .../weixin/open/api/WxOpenComponentService.java | 2 +- .../api/impl/WxOpenComponentServiceImpl.java | 2 +- .../open/api/impl/WxOpenMaServiceImpl.java | 9 +++++++++ 7 files changed, 36 insertions(+), 13 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index beaa96a89..63745aa39 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -1,5 +1,6 @@ package cn.binarywang.wx.miniapp.api; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; @@ -15,6 +16,13 @@ public interface WxMaService { */ String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; + String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session"; + /** + * 获取登录后的session信息 + * + * @param jsCode 登录时获取的 code + */ + WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException; /** *
* 验证消息的确来自微信服务器 diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java index 84b17378c..45c8db101 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java @@ -10,7 +10,6 @@ import me.chanjar.weixin.common.exception.WxErrorException; * @author Binary Wang */ public interface WxMaUserService { - String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session"; /** * 获取登录后的session信息 diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java index 380a15a1d..d80860f4b 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java @@ -1,8 +1,10 @@ package cn.binarywang.wx.miniapp.api.impl; import cn.binarywang.wx.miniapp.api.*; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.constant.WxMaConstants; +import com.google.common.base.Joiner; import com.google.gson.JsonParser; import me.chanjar.weixin.common.bean.WxAccessToken; import me.chanjar.weixin.common.bean.result.WxError; @@ -21,6 +23,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.locks.Lock; /** @@ -121,6 +125,18 @@ public class WxMaServiceImpl implements WxMaService, RequestHttpparams = new HashMap<>(8); + params.put("appid", config.getAppid()); + params.put("secret", config.getSecret()); + params.put("js_code", jsCode); + params.put("grant_type", "authorization_code"); + + String result = get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params)); + return WxMaJscode2SessionResult.fromJson(result); + } @Override public boolean checkSignature(String timestamp, String nonce, String signature) { try { diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java index ef89a9064..1e5f10be2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java @@ -25,15 +25,7 @@ public class WxMaUserServiceImpl implements WxMaUserService { @Override public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException { - final WxMaConfig config = service.getWxMaConfig(); - Map params = new HashMap<>(8); - params.put("appid", config.getAppid()); - params.put("secret", config.getSecret()); - params.put("js_code", jsCode); - params.put("grant_type", "authorization_code"); - - String result = this.service.get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params)); - return WxMaJscode2SessionResult.fromJson(result); + return service.jsCode2SessionInfo(jsCode); } @Override @@ -44,7 +36,6 @@ public class WxMaUserServiceImpl implements WxMaUserService { @Override public boolean checkUserInfo(String sessionKey, String rawData, String signature) { final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey); - //System.out.println(generatedSignature); return generatedSignature.equals(signature); } 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 d43bdb570..9b0775905 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 @@ -85,6 +85,6 @@ public interface WxOpenComponentService { String oauth2buildAuthorizationUrl(String appid, String redirectURI, String scope, String state); - WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException; + WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) 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 dcab890dc..146709165 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 @@ -239,7 +239,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { } @Override - public WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException { + public WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) throws WxErrorException { String url = String.format(MINIAPP_JSCODE_2_SESSION, appId, jsCode, getWxOpenConfigStorage().getComponentAppId()); String responseContent = get(url); return WxMaJscode2SessionResult.fromJson(responseContent); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java index 9e1a672d9..c0645d760 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java @@ -1,10 +1,15 @@ package me.chanjar.weixin.open.api.impl; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; +import com.google.common.base.Joiner; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.open.api.WxOpenComponentService; +import java.util.HashMap; +import java.util.Map; + /** * @author 007 */ @@ -20,6 +25,10 @@ import me.chanjar.weixin.open.api.WxOpenComponentService; initHttp(); } + @Override + public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException { + return wxOpenComponentService.miniappJscode2Session(appId, jsCode); + } @Override public WxMaConfig getWxMaConfig() { return wxMaConfig;