
微信公众号测试账号申请时接口配置失败,{“errcode“:-106,“errmsg“:“token check fail“}
微信公众号测试账号申请时接口配置失败,{"errcode":-106,"errmsg":"token check fail"}
·
自己在申请测试号的时候,一直报这个错,折腾了一天也没有成功,前提是自己设置的域名没毛病,官方要求是 微信公众号接口必须以http://或https://开头,分别支持80端口和443端口。但是自己也没有成功,网上查了半天也没有正确的解决方法,一直报 {"errcode":-106,"errmsg":"token check fail"},所以我决定通过一次次测试,彻底解决这个虽然很小但是很烦的问题。
先确定报错信息,浏览器F12进入开发者模式,提交后发现报错信息 {"errcode":-106,"errmsg":"token check fail"}
如果域名或者url有问题,可能会报-107,timeout 错误信息,大家一定要注意区别
-106 的错误经过反复的定位,问题还是在后端服务器那边,我也是在不断的重试中总结出来两点:
解决问题:
1.设置 ContentType格式为text/html
2.通过 response.getWriter().print() 方式输出 echoStr,而不是直接return echoStr 字符串
3.根返回类型是不是Long类型其实无关,网上有很多说必须是Long类型
直接放代码 (JAVA):
@GetMapping(value = "/auth")
@ResponseBody
public void auth6(HttpServletRequest request,
HttpServletResponse response){
log.info("auth checking start...");
try {
String nonce = request.getParameter("nonce");
String timestamp = request.getParameter("timestamp");
String signature = request.getParameter("signature");
String echoStr = request.getParameter("echostr");
log.info("auth,nonce:{},timestamp:{},signature:{},echoStr:{}",nonce,timestamp,signature,echoStr);
response.setContentType("text/html");
response.getWriter().print(echoStr);
log.info("auth echoStr:"+echoStr);
log.info("auth checking success!");
} catch (Exception e) {
e.printStackTrace();
}
}
就这么简简单单的几行代码,折腾了很久。只怪微信官方的文档不够详细,也饶了很多弯
这里的nonce,timestamp,signature 几个参数暂时没有什么用处,我打印只是为了观察下微信回调的时候这些值
再次测试一下,就成功了。
更多推荐
所有评论(0)