第一章:公众号开发环境搭建
做公众号开发,第一步不是写代码,而是搭环境。
我见过太多新手,代码写得挺溜,结果卡在环境配置上,一卡就是半天。说实话,这部分确实有点琐碎,但绕不过去。今天我就带你一步步搞定它。
1.1 申请测试号
正式公众号的申请流程比较长,还要营业执照、认证费什么的。我建议你直接用微信公众平台测试号来学习。它和正式号的功能几乎一样,唯一的区别就是——不用钱,申请即用。
怎么申请?很简单:
- 打开微信公众平台官网,找到「开发」-「开发者工具」
- 点击「公众平台测试号」,用微信扫码登录
- 系统会自动分配一个测试号给你
拿到测试号后,你会看到两个关键信息:appID 和 appsecret。这两个东西,说白了就是你的公众号身份证。后面所有的接口调用,都得靠它们来验证身份。
1.2 服务器配置
测试号申请完了,接下来要配置服务器。微信的机制是这样的:用户发消息给公众号,微信服务器会把消息转发到你自己的服务器上。所以你得先告诉微信:「我的服务器在哪」。
在测试号管理页面,找到「接口配置信息」,需要填两个东西:
- URL:你的服务器地址,必须是外网可访问的
- Token:你自己随便写的一个字符串,用来做签名验证
Token 这个东西,我习惯用「wechat_2024」这种格式,好记又不容易撞车。你随便写个「abc123」也行,但别太简单,免得被猜到。
1.3 接入验证
配置好 URL 和 Token 后,微信会发一个 GET 请求到你的服务器。这个请求里带了几个参数:
- signature:签名,用来验证请求是否真的来自微信
- timestamp:时间戳
- nonce:随机数
- echostr:随机字符串,你需要原样返回它
验证的逻辑其实不复杂:你把 Token、timestamp、nonce 这三个参数拼起来,做一次 SHA1 加密,结果和 signature 对比。如果一致,就说明请求来自微信,你把 echostr 返回回去就行。
我直接给你一个 Node.js 的示例代码:
const crypto = require('crypto');
function checkSignature(token, signature, timestamp, nonce) {
const arr = [token, timestamp, nonce].sort();
const str = arr.join('');
const sha1 = crypto.createHash('sha1').update(str).digest('hex');
return sha1 === signature;
}
// 在路由里这样用
app.get('/wechat', (req, res) => {
const { signature, timestamp, nonce, echostr } = req.query;
const token = '你的Token';
if (checkSignature(token, signature, timestamp, nonce)) {
res.send(echostr);
} else {
res.send('验证失败');
}
});
代码跑起来之后,点击测试号页面的「提交」按钮。如果看到「配置成功」的提示,恭喜你,接入验证通过了。
1.4 内网穿透工具使用
你可能会问:「我的电脑在局域网里,微信怎么访问得到?」
嗯,这就是内网穿透工具要解决的问题了。它能把你的本地服务暴露到公网上,让微信服务器能访问到。
常用的工具有几个:
| 工具名称 | 特点 | 推荐场景 |
|---|---|---|
| ngrok | 免费版有限速,配置简单 | 快速测试 |
| natapp | 国内服务,速度较快 | 日常开发 |
| frp | 自建服务器,完全可控 | 生产环境 |
我个人最常用的是 natapp。原因很简单——它不需要注册就能用,下载下来直接跑。而且国内访问速度比 ngrok 快不少。
用法也很简单:
- 下载 natapp 客户端
- 在命令行里执行
natapp -authtoken=你的token - 它会生成一个类似
http://abc123.natapp.cc的地址
把这个地址填到测试号的 URL 配置里,后面加上你的路由路径,比如 http://abc123.natapp.cc/wechat。这样微信就能找到你的本地服务了。
1.5 完整流程总结
好了,我们来捋一遍整个流程:
- 申请测试号,拿到 appID 和 appsecret
- 写一个简单的服务器,实现接入验证逻辑
- 启动内网穿透工具,拿到公网地址
- 把地址和 Token 填到测试号配置里
- 点击提交,验证通过
这一步走通了,后面的开发才有意义。你想想看,如果连环境都没搭好,后面写再多代码也跑不起来,对吧?
核心要点:
- 测试号是学习的最佳选择,功能完整且免费
- 接入验证的本质是 SHA1 签名比对
- 内网穿透是本地开发的必备工具
- Token 和 appsecret 一定要保管好
下一章,我们会正式开始写代码,实现公众号的自动回复功能。到时候你会发现,环境搭好了,写代码其实是最简单的一步。