开发微信公众号遇到的一个坑,只因一个字母 s ,我浪费了 5 个小时

功能

超简单,就是公众号启动“服务器配置“,就要把消息转到自己的服务器来处理。

症状

  1. 配置 url 和 token,提交配置,配置正确。
  2. 因为能配置正确,所以每次提交配置的时候,都能看到 nginx 的 access_log
  3. 但是发消息就会出现"Official account services unavalible, Try again later",说明消息没有正常返回 200
  4. 发送消息的时候,nginx 没有 access_log,什么鬼??
  5. 我以为是服务器配置开启的有问题,不断在开启和停用“服务器配置”之间切换,结果,微信被我玩坏了,症状就是即使已经停用了“服务器配置”,仍然没有切回去,不能实时切换,而且一直报错:

file

到后来,根本就是无法开启或停用了,那一刻,我好想死一死。

file

纠结点

  1. 为什么配置可以正确提交,而且 access_log 有日志,但是正常发消息就有问题,而且没有 access_log,为什么?为什么?为什么?

原因

我给你看 nginx 配置你就知道了

server {
  listen 80;
  server_name host.com;
  return 301 https://$host$request_uri;
}

你肯定已经猜到了,我把配置填错了,本来应该是 https://host.com/wechat ,我填写成了 http://host.com/wechat

因为做了 301 的 redirect,所以提交配置这个 GET 请求自然就可以成功,而且有 access_log,但是微信消息是 POST 请求,自然就出错了。

学到的功课

  1. 不要钻牛角尖,遇到一个问题,尝试把所有可能性理一理,休息一会,上个厕所。
  2. 如果微信公众号出现了"Official account services unavalible, Try again later"的问题,正确的 debug 流程是:

    先看 nginx 日志是否请求过来,然后再看后端 cgi 这边的报错,不要武断。

  3. 如果没有日志,就要检查配置的问题,比如,是不是 https 写成了 http 之类的傻问题。
  4. 如果有日志,那就好好检查,如果 cgi 这边没有报错,比如 Laravel 的 csrf 的问题,最好自己模拟微信 POST 一个请求过去,一目了然。
  5. 微信真的可能被你玩坏,所以出问题了的时候,不要频繁开启或停用服务器配置。

没有伤痛,就没有成长,我立志要成为微信开公众号开发专家。含着泪也要把这些问题做好记录,争取给别人一点启发。

file
file

本作品采用《CC 协议》,转载必须注明作者和本文链接
写文字大部分时候是因为我希望能帮助到你,小部分时候是想做总结或做记录。我的微信是 lijinma,希望和你交朋友。 以下是我的公众账号,会分享我的学习和成长。
本帖由 Summer 于 6年前 加精
lijinma
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 19
Summer

配图点赞。

6年前 评论
lijinma

@Summer 嘿嘿嘿,你最支持我了,Summer

6年前 评论
imxfly

你签名写着就喜欢折腾,折腾五个小时应该很爽的:neutral_face:

6年前 评论
lijinma

@Stephen 0.0 你要知道,有时候,折腾过猛,不小心把自己折腾死了,是挺惨的。。。。

6年前 评论
imxfly

微信开发坑是不少的,我之前一段时间一直做微信开发,支付那块踩坑最多= =

6年前 评论
lijinma

@Stephen 好吧,我感觉我也得踩。

6年前 评论

等我剪个空气刘海,迷死你~

6年前 评论
lijinma

@JokerLinly 坐等。。

6年前 评论

@lijinma 突然发现我好像本来就是空气刘海。。。

6年前 评论
lijinma

@JokerLinly ? 现在也是只有5根头发了吗。

6年前 评论

等我剃个光头,迷死你~

6年前 评论

你应该先看接口日志……

6年前 评论
lijinma

@happygeek 来来来。上照片。

6年前 评论
lijinma

@未寒 我主要是被那个纠结点搞郁闷了,到后来,开启和停用功能都坏了。。

6年前 评论
takashiki

这个其实还不能算微信本身的坑,微信本身也挺多坑的,比如 oauth 获取 code 的地址,如果参数顺序和文档上不同,页面就直接无法打开。。。

6年前 评论

空气刘海不错哦

6年前 评论

哈哈哈哈哈哈哈空气刘海那个表情包收下了:stuck_out_tongue_winking_eye:

6年前 评论
Destiny

get 了

6年前 评论
lijinma

@overtrue 超哥要不要剪一个试试。。。骏骏应该是空气刘海。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!