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, RequestHttp 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 = 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;