微信小程序后台配置消息服务器时报错:“Token校验失败,请检查确认”
我服务器端是用的java的springboot框架,本以为直接return字符串就可以了:
@RequestMapping(value = "/",method=RequestMethod.GET)
public String checkWeixinValid(@RequestParam(name="signature")String signature,
@RequestParam(name="timestamp")String timestamp,
@RequestParam(name="nonce")String nonce,
@RequestParam(name="echostr")String echostr){
// .......
return echostr;
}
但这样会一直报上述错误。
后来发现返回的字符串会多出俩双引号,比如: "2205560651034517463"。
找了一下原因,定位到我配置的messageConvert,使用了fastjson用来处理json。但是,当它解析一串字符串时,会加上双引号。为避免这个问题,可以在它之前加入处理字符串的convert,比如:StringHttpMessageConverter
,这样字符串就不会由fsatjson再加工
了。
事后总结:
找这么个问题花了我不少时间,期初我一直以为是微信服务的问题,光刷新它的页面就不下5次。
其实,微信经过这么多年大用户量的考验,它的服务已经很健壮了,有bug的情况极少。当出问题时首先还是要想是不是自己代码的问题。
从本源入手,要有怀疑精神,但是要有一定的实事依据做基础,凭空怀疑,就太武断了。
特此记录下来,吸取教训。