300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众平台服务器配置时token验证失败

微信公众平台服务器配置时token验证失败

时间:2019-11-04 01:24:25

相关推荐

微信公众平台服务器配置时token验证失败

这两天一直在弄微信公众号开发,在进行服务器配置时,发现总是返回token验证失败。这个问题困扰了两天,今天终于解决了。现在总结一下。

一般来说服务器配置token验证失败,可能有以下几个方面:

1.服务器ip或者域名没有认证备案(可以通过Natapp购买隧道,获取备案域名)

2.自己的服务器没有正常运行(基本不可能)

3.获取到的请求数据乱码(也没有啥可能性)

4.返回的echostr格式不正确。

前三个问题还是好解决的,现在主要说第四了问题。第四个问题主要是我用signature、timestamp、nonce、echostr这四个参数发起请求时,我的服务器接收到了数据而且验证通过,同时也成功地返回了echostr的值,但是就是一直报“token校验失败”。

微信服务器返回的数据是

{"base_resp":{"ret":02,"err_msg":"verify token fail"}}

我用postman请求了返回的结果是

发现虽然echostr虽然是正确的,但是带上了两个"",返回的是一个字符串,所以微信token验证错误。由于我使用的springMVC,返回的数据contentType是application/json,是以json字符串的形式返回的,如果直接返回的String类型的数据,就会加上""。所以有两种方法,一个是把返回的数据改为整形,二是把springMVC的框架配置文件更改一下

一、我们把返回的echostr转为整形(Long),如下

这样返回的结果就是

此时再进行token验证,就可以通过。

二、改变配置文件

方法一、<mvc:annotation-driven>

<mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"/><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/></mvc:message-converters></mvc:annotation-driven>

方法二、

<bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><!-- <value>text/html;charset=UTF-8</value> --><value>text/json;charset=UTF-8</value> <!-- 微信公纵号开发新加的--></list></property></bean><bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" /><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="stringHttpMessageConverter" /><ref bean="mappingJacksonHttpMessageConverter" /></list></property></bean>

stringHttpMessageConverter一定要放在mappingJacksonHttpMessageConverter前面。因为返回的string类型的解析器要放到json的前面。结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。