jfinal-weixin checkSignature error

Jacky_D_H 发布于 2015/11/06 16:54
阅读 734
收藏 0

@JFinal 你好,想跟你请教个问题:

jfinal-weixin, 申请了个测试号,a_little_config.txt上的appId和appSecret和token已填上。

在微信的公众平台配置接口信息时,把URL和TOKEN填好提交后,

jfinal端报以下错:

JFinal action report -------- 2015-11-06 16:38:31 ------------------------------
Controller  : com.jfinal.weixin.demo.WeixinMsgController.(WeixinMsgController.java:1)
Method      : index
Interceptor : com.jfinal.weixin.sdk.jfinal.MsgInterceptor.(MsgInterceptor.java:1)
Parameter   : timestamp=1446799112  echostr=345355917094385416  nonce=2091698811  signature=79ca8392ff6693443520b0008f99c736c5f9b31d  
--------------------------------------------------------------------------------
Nov 06, 2015 4:40:02 PM com.jfinal.weixin.sdk.jfinal.MsgInterceptor error
SEVERE: 验证失败:configServer
Nov 06, 2015 4:40:02 PM com.jfinal.core.ActionHandler error
SEVERE: /?signature=79ca8392ff6693443520b0008f99c736c5f9b31d&echostr=345355917094385416&timestamp=1446799112&nonce=2091698811


debug 进去是下面这个检查返回false

public boolean checkSignature(String signature, String timestamp, String nonce) {
   String TOKEN = ApiConfigKit.getApiConfig().getToken();
   String array[] = {TOKEN, timestamp, nonce};
   Arrays.sort(array);
   String tempStr = new StringBuilder().append(array[0] + array[1] + array[2]).toString();
   tempStr = HashKit.sha1(tempStr);  return tempStr.equalsIgnoreCase(signature);
}


波总知道是什么原因吗?


加载中
0
JFinal
JFinal

   出现签名检测失败,通常就是检测失败,最可能的原因通常有两个:

1:TOKEN 设置错误

2:公众号并非当前想开发的号,便如用的测试号。这个本质上还是 TOKEN 设置错误

   com.jfinal.weixin.sdk.kit.SignatureCheckKit.checkSignature(...) 这个方法只涉及到四个参数:TOKEN, timestamp, nonce, signature,其中后三个参数全是微信自动传生成的,只有 TOKEN 是受自己控制的,所以本质上是 TOKEN 错误。

   单步调试可轻松解决问题,在本地实现微信项目单步调试见此文:http://my.oschina.net/jfinal/blog/336861 

sesamefox
sesamefox
signature跟tempStr值不一样,不知道是否有更新版本
0
sesamefox
sesamefox

signature跟tempStr值不一样,不知道是否有更新版本

返回顶部
顶部