引子

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

网上解决的问题这里就不再赘述,下面说的是我碰到的问题,同时也叙述了“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. 电脑如何恢复声音_电脑文件剪切丢失如何恢复?99%数据都能恢复
  2. 黑客渗透入门教程 第一课:粗暴的端口扫描
  3. MultiBoot设计参考链接
  4. 【转】线性代数的几何意义
  5. 非负矩阵分解中基于L1和L2范式的稀疏性约束
  6. 1050 循环数组最大子段和
  7. Web前端工程师求职的失败——评《非你莫属》20120909期宋龙龙片段
  8. 每日一笑 | 对不起,我还没下班...
  9. 程序员年薪高达40万,为什么有很多程序员单身?看看网友怎么说!
  10. UUID实现之一twitter的分布式自增IDsnowflake算法
  11. html 修改坐标时间,牛顿:时间是人类的错觉,爱因斯坦:时间只是能更改的坐标...
  12. 【程序猿】2016年自己的十年计划篇
  13. orientation|keyboardHidden
  14. 本地 Git 文件夹显示绿色标识
  15. 【高等数学笔记】二元函数连续、可微、偏导数存在、偏导数连续、任意方向导数存在的关系
  16. ubuntu安装pinta(图片编辑器)
  17. 微信公众号扫一扫功能vue配置
  18. excel表格显示无法连接服务器,打开工作簿时Excel总是提示包含无法更新的链接?...
  19. matlab演示平抛运动,几何画板动态演示平抛运动的规律
  20. 信号处理--常用术语

热门文章

  1. mysql 清空表数据,主键重新排序
  2. 怎样成为高级的学习者?(4· 完结篇):融合
  3. Google、Github账号等...登录Web应用
  4. 三个成语等于两个月的学习感悟
  5. 【Android】部分机型如oppo、华为等等缓存图片在本地相册失败记录和解决方案
  6. 安装厕所坑位计时器???快手回应:为了测试如厕次数与时间增加坑位数量...
  7. 词向量 文本相似度计算
  8. 唐山师范学院一位大四女生从教学楼15层跳下自杀
  9. 高手进阶必读:Linux内核的同步机制
  10. 计算机桌面屏幕显示不到右边,电脑显示器没有满屏怎么回事