微信公众号配置 token验证失败 解决方案总结

排查问题我将从以下几个步骤进行

  1. 自己编写的验证接口的问题
  2. 服务端配置问题
  3. 微信端出现的问题

一. 自己编写验证接口的问题

可能出现的情况
1.1 没有严格按照微信官方的要求进行token验证。
解决方案建议:详细多阅读几次官方文档,并达到理解的程度。这里我将文档中的重点位置摘录,以提醒注意:
验证消息的确来自微信服务器
开发者提交信息(如何配置不再累赘,参见官方文档)后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与SIGNATURE对比,标识该请求来源于微信

1.2 非正常编辑文件(记事本,在线编辑),导致添加了 utf8 的 bom 签名
解决方案: 使用多功能编辑器去除 bom。

1.3 接口文件(php)结束符后包含换行或其他字符


//文件开始
?>

//文件结束

解决方案:去除多余的字符。

如何排除不是自己代码编写出的问题:

申请微信公众平台接口测试账号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,用自己写的接口去验证测试账号的token,如果验证能通过,基本能排除自己代码的问题。接下来就要开始怀疑自己服务器配置的问题,导致接收到微信服务器的响应不能正常传递给接口进行处理。

二. 服务器配置的问题

2.1 服务端缓存导致配置没有及时更新生效;
解决方案:在进行验证前清除缓存

# php
ob_clean();

2.2 程序 gzip 加密异常,导致token验证失效
解决方案: 可临时取消程序 gzip 功能排查测试。

2.3 服务安装了安全狗或者云盾可能会拦截腾讯服务器的请求(阿里云esc)。
解决方案:卸载安全狗,或者提示云盾设置白名单。如何处理,这里可以参考。https://www.feiniaomy.com/post/155.html

2.4 虚拟主机使用临时域名去验证导致被系统拦截(适用于万网的虚拟主机)
解决方案: 使用已经接入备案的正式域名来进行验证操作。

说明:如果上面的情况都排除了还没解决,这里还有一个方向去排除是服务器的配置问题,那就是确认微信服务器是否发送了请求到我们自己的服务器。如果能确认在确认修改配置时微信服务器没有发送请求到我们的服务器,就能确认是微信服务器的问题。

如何确认微信服务是否发送请求到我们服务器,这里有两种方法: 1. 查看日志,参考https://www.cnblogs.com/kenshinobiy/p/5433705.html, 后面讲到了如何进行写入日志; 2. 进行数据抓包, 参考https://blog.csdn.net/u012322855/article/details/52080071。

通过最后抓包,我确认了微信服务器没有响应到我的开发服务器,我这个运气可去买彩票了,微信服务器出现故障既被我撞到了T_T, 既然确定是微信服务器没有请求发到开发服务器,接下来就需要跟微信客服进行沟通了。

三. 如果是微信服务器出现问题该么办?

  1. 如果不是很急,就可以在微信开发者论坛:https://developers.weixin.qq.com/community/develop/mixflow去提问题, 或主动的在论坛上找官方客服进行咨询。
  2. 如果比较急,就直接打微信平台的客服电话。

腾讯的事业部门及产品很多,一定要找对咨询的地方,要不会浪费双方的时间。
查寻腾讯不同产品客服的地方:http://kf.qq.com/product/weixinmp.html

注: 和微信公众平台客服在开发者社区提问的帖子:https://developers.weixin.qq.com/community/develop/doc/000e4208ad8670b2bbd8c0e2e53400?jumpto=reply&parent_commentid=00028266b1835097c3d87e8605ac&commentid=000a2c9bd3ccb02ac4d84aed6564

参考:

  1. https://help.aliyun.com/knowledge_detail/42508.html?spm=5176.2000002.0.0.60061073MSFZvK
  2. https://bbs.csdn.net/topics/390991193

我已经开通了我个人网站, 欢迎访问!

你可能感兴趣的:(微信小程序开发)