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

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

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

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

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

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

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

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

微信服务器返回的数据是

{"base_resp":{"ret":200302,"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" />
	
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
			    <ref bean="stringHttpMessageConverter" />
				<ref bean="mappingJacksonHttpMessageConverter" />
			
			</list>
		</property>
	</bean>

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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值