诶,虽然说时间比较紧张,但是除了论文以外好像也没什么具体的工作。 正好室友开始玩微信公众平台开发,这玩意貌似正如日中天,我也学习一下好了。

首先要说注册。 注册其实很简单的啦,填写真实身份,上传清晰(其实只要不模糊到看不清身份证号就行)的手持身份证照片,一般都能通过。 注册时选公众号类型的话,企业、组织、政府机构才能注册服务号,个人只能注册订阅号。 个人理解,服务号是提供稳定服务,比如网银、移动网络运营商之类的。 而订阅号面对个人,提供一个简单的媒体发布平台(所谓的“自媒体”?)

注册之后需要审核通过才能使用。审核一般很快的,我的是次日审核就通过了。 注册到审核通过的这段时间里,是没有办法通过公众号 ID 或名字以及其他任何手段搜索到的。

订阅号默认是使用编辑模式的,也就是各种自动回复(针对关键词的自动回复)都是预先在公众平台网站( mp.weixin.qq.com 这里)设置好的。 如此碍手碍脚的模式怎么玩,有开发能力的还是果断打开开发模式吧。 开发模式和编辑模式只能二选一,建议一旦选择就不要修改,以免造成一些设置丢失。

打开开发模式之后要首先成为开发者才能拿到 API 的使用权限。成为开发者很好办,只需要你有自己的服务器。 根据接入文档的描述,只需要做一个验证就可以了。 建议是将这个检验消息真实性的部分剥离出来,以后还要用到。 当然如果你无所谓的话,第一次验证根本不用去计算什么哈希值,直接返回 GET 数据里的 echostr 就可以完成接入。

剩下的基本就是解析和生成 XML 而已,跟微信都没什么大联系了,照着微信文档看看就清楚。

我在公众平台的问答系统里随便逛了一圈,发现两个问得比较多的问题。

一个是高级接口权限。很多接口需要 appidsecret 这两个凭证。很多人在问答系统里说自己找不到这两个东西。 如果你是订阅号,并且没有任何认证(微信认证或关联腾讯微博认证),是只有 3 个基本接口可以使用的(开发模式里的 3 个接口)。 这不是系统 BUG ,而是对未认证的订阅号,根本就不提供 appidsecret 。 所以涉及到这两个凭证的接口,比如多媒体文件上传下载,都不能使用,更不要提语音识别等等功能了。

第二个问题就是测试帐号。虽然微信公众平台对订阅号不提供这些高级接口,但开发者却可以通过申请测试帐号来获得部分高级接口的使用权。 这是为开发者测试阶段提供的功能,有效期为一年。把测试帐号拿来实际使用是不明智的。

为什么这么说呢,因为测试帐号根本和你的公众号是两个体系。 申请测试帐号后进入测试帐号的管理页面,可以设置单独呃服务器地址和 Token 值。 通过扫描测试帐号页面的二维码进行关注的用户,会出现在用户列表(如下图)中(最多可以有 20 个测试用户)。

测试帐号用户列表

高级接口权限只能对这些用户有效。 更进一步地,测试帐号不显示你的公众号名称,而是只显示“微信公众平台测试号”和默认的空白头像,十分不利于用户辨识。

嗯,就说这么多了。因为我自己也只是在“被动回复用户消息”这个接口上进行开发。 虽然微信公众平台本身文档说得不太清楚,但是仔细读还是能帮上很大的忙。

最后记一下,Django 会自动对 settings 里变量名中含有如下内容的变量,在出错页面(当 DEBUG 设置为 True 时)进行掩码隐藏(以 * 代替),以避免敏感信息泄露。

  • API
  • KEY
  • PASS
  • SECRET
  • SIGNATURE
  • TOKEN