const crypto = require('crypto'); function sha1(str) { return crypto.createHash('sha1').update(str).digest('hex'); } // 假设config是您的配置对象,其中包含了token const config = { token: 'YOUR_TOKEN_HERE' // 您需要在这里提供实际的token }; // ... 您之前的代码片段 ... // Express.js的路由处理示例 app.get('/your-webhook-url', (req, res) => { const { signature, echostr, timestamp, nonce } = req.query; const { token } = config; // 1. 将token、timestamp、nonce三个参数进行字典序排序 const arr = [timestamp, nonce, token]; const arrSort = arr.sort(); // 2. 将三个参数字符串拼接成一个字符串进行sha1加密 const str = arrSort.join(''); const sha1Str = sha1(str); // 3. 获得加密后的字符串可与signature对比 if (sha1Str === signature) { // 如果是一个有效的请求,返回echostr res.send(echostr); } else { // 如果请求不合法,返回错误信息 res.status(403).send('error'); } }); // 监听端口 app.listen(3000, () => { console.log('应用启动成功'); });
Node 微信公众号验证代码
23 min read