开启微信公众号开发者模式

全篇共 1933 字。按500字/分钟阅读,预计用时 3.9 分钟。总访问 434 次,日访问 6 次。

登录公众号后台

微信公众平台的账号类型包括服务号、订阅号和小程序,这些账号都是从 微信公众平台 这一个地址入口登录的。如果你还没有任何一个微信公众平台的账号,则应该先注册一个微信公众号账号。如果你已经有了一个微信公众号,你可以从这个页面用微信直接扫码登录。我记得在2015年第一次用微信公众平台时,只能通过账号和密码登录,现在支持微信扫码,在微信上选择要登录的账号类型,很方便。

微信公众平台已经和它一开始的时候很不一样了,而且在变得更好,所以这里我就不配图了,因为它的UI也在不断变化。

我有自己个人维护的公众号,你可以在微信里搜索“一个教程”,或者扫描下方的二维码关注我,关注后就能在第一时间知道我的个站新发布的文章、独立作品等动态,也可以在公众号里给我留言,就像我的私人微信一样,因为这是我个人在运营的账号。

关闭自动回复

具备开发能力的你,就应该关闭自动回复功能。你就可以动态地回复用户发送给公众号的各种类型的消息。比如,当用户发送 “天气” 这个关键字,你就能动态地把当天的天气情况回复给用户,你可以让用户分享一次地理位置,就能准确的告诉他所在城市的天气情况。

再比如,当用户关注了你的公众号,就会触发一个 “订阅事件”,你就可以在这时回复用户他是第几个关注你的公众号的人。当用户取消关注公众号后,你就不能再回复给用户信息的,但依然会触发一个 “取消订阅事件”,你可以在这个时候设置一下用户在你的服务器或数据库中占用的资源。

开发者和服务器

在 开发-基本配置 中,你将看到开发者ID(AppID)和开发者密钥(AppSecret)两个至关重要的参数。AppID是可以公开的,我的一个教程公众号的AppID是wxa6686e2d7d734068。但AppSecret是不应该泄漏的,一旦泄漏,你就应该重置它,得到新的AppSecret。AppID和AppSecret理论上是永远不会改变的。

Access Token和AppSecret一样重要,但是它只能通过AppID和AppSecret两个参数合成得到。而且它有较短的有效期,目前官方文档中提到的有效期是2个小时,未来还会改变。有效期一过,它就没有用处了。Access Token只有通过API的方式获得,你可以通过开发者ID和密钥调用获取access_token的接口,为了安全起见,你必须告诉微信服务器你调用该接口的服务器IP地址,将你的服务器的IP地址加入白名单后,才能当access_token过期后重新获取它。

配置服务器的第一步是双向校验,微信服务器要验证你配置的服务器地址是否是你自己的服务器,同样,你要验证请求是否来自微信服务器,主要通过比对signature来实现。我的Web服务器是用Node+Express开发的,我这里直接把校验双向验证的请求是否来自微信服务器的Node代码放出来。

// 这是一个中间件。
// 你可以把它放在你的某个接收微信服务器验证请求的路由下
(req, res) => {
  const q = req.query;
  const signature = q.signature;
  const token = '这里填写和你在服务器配置中的令牌(Token)一样的字符串';
  const echostr = q.echostr;
  const timestamp = q.timestamp;
  const nonce = q.nonce;
  const array = new Array(token, timestamp, nonce);
  array.sort();
  let _signature = crypto.createHash('sha1')
    .update(array.toString().replace(/,/g, ""), 'utf-8')
    .digest('hex');
  if (_signature == signature) {
    // 原样返回 echostr 表示验证通过
    res.send(echostr);
  } else {
    // 否则表示验证不通过
    res.sendStatus(404);
  }
}

做到这里,你已经开启了微信公众号开发者模式了。关闭了自动回复功能;将你自己的服务器IP地址添加到白名单内,以成功调用access_token;最后双向验证你的服务器配置是否妥当。


扩展阅读: