引子

微信公众号开启开发者模式时,需要配置“服务器配置”,但在配置这个东西时有很多坑需要注意。

网上解决的问题这里就不再赘述,下面说的是我碰到的问题,同时也叙述了“TOKEN验证失败”的根源问题。

背景

之前,我的公众号一直正常工作,但由于需要更换服务器,就把网站做了迁移,数据也迁移的,但是在修改服务器配置时,始终提示“TOKEN验证失败”。

于是艰难的排查之路开始了。

我的后台是PHP的,于是我在入口文件中加入了客户机访问URL输出的方法,将访问地址写入了日志,并将TOKEN验证也加入了输出。比较诡异的是,每一步的输出都很正常,但始终提示“TOKEN验证失败”。

本着“腾讯这种大公司不会出这个错”的思想,还是将定位问题的重心放到自己的代码中。

开始一步一步排查验证接口。

微信服务器访问开发者服务器的接口形态如下:

http://ip/verifyToken.php?signature=728e5688ce9ed6e00ea498fe8b11e35d5c16bbd7&echostr=8085854468487076604&timestamp=1530682104&nonce=1130401568

微信服务器的唯一要求就是:“原样返回echostr”,这个并不难,甚至在服务器端不做TOKEN验证,直接原样返回echostr就可以通过验证。

于是,就新建了一个php文件,并直接 exit($_GET['echostr']),修改了下服务器配置并提交,验证成功。由此说明,问题还是出现在自己的业务代码中。

继续排查自己的接口。在Chrome中,仔细分析verifyToken.php接口的请求和返回。

突然发现Response虽然是字符串,但是字符串输出并不是在第一行。如下图

然后就明白了,必然是代码里哪里输出空行导致最终结果字符串多了些不需要的字符。

于是,有目标的跟踪排查,发现在一个php工具类里,写了php起始标签和结束标签 <?php ?>,而且在结束标签后面还有有空行。删除php结束标签,修改服务器配置到之前的配置,提交,验证通过。

至此,"TOKEN验证失败"的根源也找到了,同时,微信服务器的解析方式也了解了。
微信服务器拿到返回结果后 没有做任何操作,直接跟原字符串做对比,并返回对比结果。

总结

所以,不论你后台使用的是什么语言,在出现"TOKEN验证失败"的问题时,首先看看公众平台和服务器代码中的TOKEN配置是否一致,然后不需要考虑其他,直接拿到微信服务器访问开发者服务器的接口,直接分析这个接口就好。这个接口的返回必须与接口访问中的echostr字符串一致,不能有任何其他不必要的字符。
最常见的问题是多了回车符、换行符、服务器文件编码不同多出来的起始符或结束符等。

微信开发“TOKEN验证失败”根源和解决方法相关推荐

  1. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  2. 传奇服务器验证失败怎么回事,绝地求生从外部提供商处验证失败原因及解决方法推荐...

    绝地求生从外部提供商处验证失败是怎么回事?这样的问题相信许多的小伙伴们也都遇到了吧,怎么解决?很多玩家可能还不太清楚,下面小编为大家带来了绝地求生从外部提供商处验证失败原因及解决方法推荐,感兴趣的玩家 ...

  3. 阿里云服务器微信接口开发TOKEN验证失败

    云服务器 ECS 服务器中微信公众平台 Token 验证失败常见原因 很多的用户的程序后台在 ECS 服务器进行微信公众平台 Token 验证是显示失败如下图: 1.非正常编辑文件(记事本,在线编辑) ...

  4. php开发微信公众号token验证失败,Thinkphp5 微信公众号token验证不成功的原因

    微信是中国最流行的社交软件之一,随着微信生态系统的建立,很多人也致力于公众号 相关的文章">微信公众号和微信小程序的开发,那么Thinkphp5 微信公众号token验证不成功的原因及 ...

  5. nodejs+express解决微信公众号token验证失败

    nodejs+express解决微信公众号token验证失败 问题描述 下面是服务端代码 问题原因 解决方案 重新运行服务器问题解决 结语 问题描述 这里是测试号的状态,如果是公众号的话上边应该显示t ...

  6. 微信公众号开发配置url提示token验证失败(http可以,https失败)

    最近在开发微信公众号的时候遇到一个问题. 以前服务器使用的是80端口的http协议,后来遇到需求更改为443的https协议. 在重新配置微信公众号url时token一直提示验证失败,明明证书没有过期 ...

  7. 微信token验证失败的解决方法

    微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...

  8. php 公众号 验证失败,微信公众号Token验证失败的几种情况及解决办法

    微信公众号Token验证失败的几种情况及解决办法 1. 思路看验证的文件,编码是否是:utf-8 无bom头的 2. thinkphp框架,要关闭调试模式,开启调试模式容易有错误代码出现,导致验证失败 ...

  9. 关于TP框架的微信开发服务器配置TOKEN验证失败解决方案

    首先得确定一下服务器配置的参数有没有写对 1.URL地址能不能正常访问,在访问的地址echo或dump()一下,然后在浏览器访问一下(URL最好不要用m,c,a格式写) 2.TOKEN设置的与后台设置 ...

最新文章

  1. 用JSON技术加快AJAX程序开发
  2. 英伟达官方免费课程!学用皮克斯USD框架,在主流3D仿真和协同应用中大显身手!...
  3. 数据库事务原理详解-事务的嵌套
  4. 个人博客前端模板_腾讯前端开发工程师,教你极速搭建一个个人博客网站
  5. android 热修复 需要重启应用嘛?_Android热修复方案盘点
  6. 2018年最值得关注的15大技术趋势
  7. 祁是计算机,南京邮电大学计算机/软件学院导师介绍:祁正华
  8. java 类一定要声明成public_java测试题(四)--答案
  9. html和css的编程规范,Bootstrap CSS编码规范
  10. 水平居中设置-定宽块状元素
  11. Itext导出pdf教程
  12. 你无法访问计算机,计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系的解决办法...
  13. Gephi最详细安装教程没有之一
  14. java 代码箭头代表什么_箭头运算符' - '在Java中做什么?
  15. 结合实战,浅析GB/T28181(七)—— 球机云台控制
  16. 改进维纳滤波的实现——光学稀疏孔径成像系统图像恢复算法研究 陈灏
  17. 树莓派4b摄像头使能
  18. 2022.04.21【日常维护】|服务器存储清理浅谈
  19. python图书推荐系统_在线图书推荐系统的实现含源码(协同过滤)
  20. 使用js-export-excel插件实现前端导出excel表格

热门文章

  1. 【视频教程】帝国CMS制作网站系列教程05
  2. C/C++中部分我不太了解的函数和头文件——iomanip和setw和setfill() 函数
  3. 理解vSphere虚拟交换机中的VLAN类型
  4. 谈谈 AI ISP (1)开场白
  5. Python页面自动化文件上传两种方式
  6. win7加入win2003域
  7. jsp内置对象和作用
  8. VIM退出命令详解【编辑退出命令】
  9. 第一节 常用组件 之 Expression 概述
  10. java的类和接口区别_Java接口和类的区别