微信公众号服务器验证Token步骤详解
开通微信公众号开发者模式时,服务器配置中的Token验证是必要环节,以下是详细操作步骤及注意事项,帮助开发者快速完成验证。
前期准备
-
服务器要求
- 拥有公网可访问的服务器(域名或IP均可)。
- 服务器支持处理HTTP GET请求,并具备代码执行能力(如PHP、Python、Node.js等)。
-
公众号后台准备
- 登录微信公众平台,进入开发→基本配置→服务器配置,点击“修改配置”。
配置服务器信息
-
填写服务器参数
- URL:服务器接口地址(如:
https://yourdomain.com/wechat
)。 - Token:自定义字符串(需与服务器代码中的Token一致)。
- EncodingAESKey:随机生成或手动填写。
- 消息加解密方式:根据需求选择明文模式、兼容模式或安全模式。
signature = request.args.get('signature')
timestamp = request.args.get('timestamp')
nonce = request.args.get('nonce')
echostr = request.args.get('echostr') - URL:服务器接口地址(如:
-
生成签名
- 将
timestamp
、nonce
、Token
按字典序排序后拼接成字符串。 - 使用SHA1算法生成签名,并与微信传来的
signature
比对。import hashlib def check_signature(token, signature, timestamp, nonce): tmp_list = sorted([token, timestamp, nonce]) tmp_str = ''.join(tmp_list) sha1 = hashlib.sha1(tmp_str.encode()).hexdigest() return sha1 == signature
- 将
-
返回验证结果
- 若签名一致,返回
echostr
字符串;否则返回错误提示。if check_signature(TOKEN, signature, timestamp, nonce): return echostr else: return 'Verification Failed'
- 若签名一致,返回
验证流程示意图
用户提交服务器配置 │ 2. 微信服务器发送GET请求 → 用户服务器 │ 3. 用户服务器校验签名 │ 4. 校验成功 → 返回echostr → 公众号后台显示“配置成功” │ 5. 校验失败 → 显示“Token验证失败”
常见问题与排查
-
验证失败原因
- Token不一致:检查服务器代码与公众号后台填写的Token是否完全相同(区分大小写)。
- 时间戳超时:确保服务器时间与网络时间同步(误差不超过5分钟)。
- URL无法访问:使用工具(如Postman)测试接口是否响应GET请求。
-
日志调试建议
- 记录微信请求的原始参数(signature、timestamp、nonce)。
- 输出生成的签名与微信签名对比,定位不一致原因。
安全注意事项
- Token保密:Token相当于服务器与微信通信的密钥,避免泄露。
- 启用HTTPS:建议为服务器域名配置SSL证书,提升通信安全性。
- 定期更新Token:若怀疑Token泄露,立即在公众号后台和服务器端同步更新。
引用说明
本文步骤参考微信官方文档《消息接口配置指南》,具体实现需结合开发者自身技术栈调整。