微信公众号 原样返回echostr 仍然验证失败的坑
遇到的问题:

死活token校验不通过,我真的不知道啥原因
微信要求:确认此次GET请求来自微信服务器,则原样返回echostr参数内容
都按要求来了,但怎么都不行,总是提示:Token校验失败,请检查确认
仔细检查了配置好几次,都没发现能有什么问题
我自己都通过浏览器手动输入参数认证了好几遍,都能验证成功,而且返回了echostr参数内容,那怎么微信开通设置老是提示Token校验失败,请检查确认?
这时,我注意到一个问题,那就是return回来的echostr是带双引号,而echo回来的echostr是不带双引号的。
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@GetMapping("/get") public String doGet(String signature, String timestamp, String nonce, String echostr) { log.info("-------------微信小程序消息验证,signature:{},timestamp:{},nonce:{},echostr:{}", signature, timestamp, nonce, echostr); if (wxMaService.checkSignature(timestamp, nonce, signature)) { log.info("-------------微信小程序消息验证通过,echostr:{}", echostr); return echostr; } return null; }
|
死活验证不过去,百度半天没人给出正确的解决办法。最后终于找到了解决办法,把echostr改成Long类型,验证成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@GetMapping("/get") public Long doGet(String signature, String timestamp, String nonce, Long echostr) { log.info("-------------微信小程序消息验证,signature:{},timestamp:{},nonce:{},echostr:{}", signature, timestamp, nonce, echostr); if (wxMaService.checkSignature(timestamp, nonce, signature)) { log.info("-------------微信小程序消息验证通过,echostr:{}", echostr); return echostr; } return null; }
|
