微信101
目标
- 将公网应用网站改写为公众号后台服务
- 可以通过公众号使用:
- 使用专用指令,可打印出过往所有笔记
- 一次接收手机端输入的文字(不包含表情/图片/声音/视频...)
- 在服务端合理保存
- 同时兼容的命令行工具远程交互/使用/管理
可以通过本地命令行工具监察/管理网站:
- 获得当前笔记数量/访问数量等等基础数据
- 可以获得所有笔记备份的归档下载
备选
- 如果分笔记类别呢? - 如何建立认证功能,防止有人误入? - 如果识别微信用户呢? - 即,这是一个私人笔记系统,不接受其它人使用 - 当然,想作成多人也是相同的技术. - 如何建立数据加密?防止有人通过分析网络协议伪造数据提交?
过程
坑一:sae 微信接入及测试环境建立
吸取前面经验,先花时间把环境搭好。在github 上建立一个san的仓库,与新浪云上的一致,每次可以同步push。第一次尝试在网页上提示配置失败,当时很难判断是具体是哪个环节出错,想到最关键是建立一个可及时反馈的测试环境,可以用 crul 模拟微信API 像本地sae环境发消息。参考 [大妈的weixin chaos](https://chaos2wechat.readthedocs.org/en/latest/ch00/try.html)。本地测试没有问题,但还是提示一样的错误。
问题:如何得到具体日志,定位问题
- 尝试1: 查看sae日志,发现报错是500,internal server。应该是sae 内部问题。
- 尝试2: 注释掉其它无关语句,逐一排查。发现有 print request.query.keys() 时就不行。当时还不知道怎么回事,参考其它人的教程,可能是sae bottle的问题。
尝试3: 思考怎么才能显示出更详细的sae内部日志,一开始纠结在sae的日志中心始终没找到。在google 上搜索 'sae 内部日志‘、'sae internal server error'、'sae debug bottle'最终想到要打开 bottle 的debug 模式。发现错误为:
AttributeError: 'Request' object has no attribute 'query'
尝试4:upload bottle.py 500 消失. 但仍然配置失败。用 http://debug.fangbei.org/ 发现是token 验证失败。
- 尝试5: google 一下,可能是sae未通过身份验证会附加返回一些js内容。只有等身份验证通过后再尝试。
小结
- ‘关注情境’ 。这是《程序员的思维修炼》里提到的诀窍之一。这个问题花了几个小时都在如何找到日志,定位错误上。大妈48分钟乱入微信是建立在相关知识都很熟练的情境下,作为新手很容易忽视环境的关系,遇见问题就容易认为是程序写错了,对环境下意识的忽视。
- goolge 搜索的关键词很重要。