开发微信公众号开发者接口

事情是这样的。去年末的时候撸了一个下载 instagram 图片视频的接口,放在微信公众号上,然后挂在李超超的服务上。那时候是用 python 写的。

这几天用 node 重写了一下。写的过程中其实是很难受的。github 上有一个微信公众号开发的 python 框架,其实我可以用现成的的框架直接搞。但是因为想试一下 node,就还是自己搞了。

写的过程中比较难受是 node 的天生异步机制。我感觉异步的思维真的有点反人类。。尤其是写惯了同步的代码后。。所以踩了很多坑点。

坑点记录

坑点1: xml解析

可能是微信开发的时候还比较早吧,数据包是 xml 格式的 (现在遍地 JSON ,当然现在微信新的接口也都是 JSON ) ,所以原理上要用 http 模块监听,然后在回调函数里再用 xml2js 解析,然后再在回调函数里处理数据包。疯狂回调,所以写成 promise 的形式比较合理。。然后我又撸 promise 。。谁能想到!这个轮子别人早就造好了。我真是操了。。我用的是 koa 框架,所以用了 koa-xml-body。

坑点2: request异步

其实跟上一个是一样的道理。。。我搞了半天,才发现轮子别人已经造好了。request-promise 依赖,完成我的梦想。

坑点3: log4js

我加了一个日志模块。配置里面 type 设为 datefile ,本机运行环境没报错,但是服务器端报错了。。看了官方文档之后才发现是 dateFile 。。可是为什么本地运行环境没关系呢。。奇怪。。

坑点4: 公众号接口权限

我本来感觉可以加很多东西在这个公众号接口里。但是微信官方对未认证的公众号开放的权限实在有限 (个人用户不能认证) 。所以能做的事还是比较有限的。我连主动给别人发消息都不行。。只能被动回复。

日志

整个开发过程大概就是:

  • 看官方文档
  • 用 natapp 内网渗透工具搞一个测试接口号来,验证一下,接入接口号
  • 看官方文档,看 node 官方文档,看各种官方文档
  • 开发完成,部署

总结

  • 微信公众号开发者接口好玩还是挺好玩的。
  • 感觉还是没有感受到 node 的精髓。