mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-10-14 18:25:10 +08:00
#513 修复开放平台小程序jscode2session 错误
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package cn.binarywang.wx.miniapp.api;
|
package cn.binarywang.wx.miniapp.api;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||||
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
|
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 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;
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 验证消息的确来自微信服务器
|
* 验证消息的确来自微信服务器
|
||||||
|
@@ -10,7 +10,6 @@ import me.chanjar.weixin.common.exception.WxErrorException;
|
|||||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||||
*/
|
*/
|
||||||
public interface WxMaUserService {
|
public interface WxMaUserService {
|
||||||
String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取登录后的session信息
|
* 获取登录后的session信息
|
||||||
|
@@ -1,8 +1,10 @@
|
|||||||
package cn.binarywang.wx.miniapp.api.impl;
|
package cn.binarywang.wx.miniapp.api.impl;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.*;
|
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.config.WxMaConfig;
|
||||||
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
|
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import me.chanjar.weixin.common.bean.WxAccessToken;
|
import me.chanjar.weixin.common.bean.WxAccessToken;
|
||||||
import me.chanjar.weixin.common.bean.result.WxError;
|
import me.chanjar.weixin.common.bean.result.WxError;
|
||||||
@@ -21,6 +23,8 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,6 +125,18 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
|
|||||||
return this.getWxMaConfig().getAccessToken();
|
return this.getWxMaConfig().getAccessToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
|
||||||
|
final WxMaConfig config = getWxMaConfig();
|
||||||
|
Map<String, String> 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
|
@Override
|
||||||
public boolean checkSignature(String timestamp, String nonce, String signature) {
|
public boolean checkSignature(String timestamp, String nonce, String signature) {
|
||||||
try {
|
try {
|
||||||
|
@@ -25,15 +25,7 @@ public class WxMaUserServiceImpl implements WxMaUserService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException {
|
public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException {
|
||||||
final WxMaConfig config = service.getWxMaConfig();
|
return service.jsCode2SessionInfo(jsCode);
|
||||||
Map<String, String> 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -44,7 +36,6 @@ public class WxMaUserServiceImpl implements WxMaUserService {
|
|||||||
@Override
|
@Override
|
||||||
public boolean checkUserInfo(String sessionKey, String rawData, String signature) {
|
public boolean checkUserInfo(String sessionKey, String rawData, String signature) {
|
||||||
final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey);
|
final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey);
|
||||||
//System.out.println(generatedSignature);
|
|
||||||
return generatedSignature.equals(signature);
|
return generatedSignature.equals(signature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -85,6 +85,6 @@ public interface WxOpenComponentService {
|
|||||||
|
|
||||||
String oauth2buildAuthorizationUrl(String appid, String redirectURI, String scope, String state);
|
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -239,7 +239,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 url = String.format(MINIAPP_JSCODE_2_SESSION, appId, jsCode, getWxOpenConfigStorage().getComponentAppId());
|
||||||
String responseContent = get(url);
|
String responseContent = get(url);
|
||||||
return WxMaJscode2SessionResult.fromJson(responseContent);
|
return WxMaJscode2SessionResult.fromJson(responseContent);
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
package me.chanjar.weixin.open.api.impl;
|
package me.chanjar.weixin.open.api.impl;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||||
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.open.api.WxOpenComponentService;
|
import me.chanjar.weixin.open.api.WxOpenComponentService;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="https://github.com/007gzs">007</a>
|
* @author <a href="https://github.com/007gzs">007</a>
|
||||||
*/
|
*/
|
||||||
@@ -20,6 +25,10 @@ import me.chanjar.weixin.open.api.WxOpenComponentService;
|
|||||||
initHttp();
|
initHttp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
|
||||||
|
return wxOpenComponentService.miniappJscode2Session(appId, jsCode);
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public WxMaConfig getWxMaConfig() {
|
public WxMaConfig getWxMaConfig() {
|
||||||
return wxMaConfig;
|
return wxMaConfig;
|
||||||
|
Reference in New Issue
Block a user