微信公众号感觉入门是真的难啊,受权限的约束,个人开发者真的挺难走的,特别像博主这种主攻前端的人。由于迟迟没把域名备案办下来。先从测试号入手。
申请页面信息
打开测试号申请页面,可以看到需要填写的内容。
首先要做的就是接口配置信息这部分内容了。
内网穿透
一般我们会在本地进行开发,因此必须使用工具进行内网穿透,将一个公网域名穿透到本地内网。用NATAPP可以做到。使用方法很简单,这里不再赘述。
NodeJS服务器搭建
我这边使用express生成器搭建服务。
1 2 3 4 5 6 7 8 9 10
| // 全局安装生成器 npm install express-generator -g // 生成项目,并指定模板引擎 express --view=ejs wechat_express
cd wechat_express // 安装node依赖 npm install // 启动 set DEBUG=myapp:* & npm start
|
新建一个配置文件config/index.js
1 2 3 4 5
| const CONFIG = { port: '4300', token: '你的token' } exports.CONFIG = CONFIG;
|
在app.js中指定端口
1
| app.set('port', config.port);
|
写路由,进行微信公众号的token验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| var express = require('express'); var crypto = require('crypto'); var config = require('../config/index').CONFIG; var router = express.Router();
router.get('/',function(req,res){ console.log(req) //1.获取微信服务器Get请求的参数 signature、timestamp、nonce、echostr var signature = req.query.signature,//微信加密签名 timestamp = req.query.timestamp,//时间戳 nonce = req.query.nonce,//随机数 echostr = req.query.echostr;//随机字符串
//2.将token、timestamp、nonce三个参数进行字典序排序 var array = [config.token,timestamp,nonce]; array.sort();
//3.将三个参数字符串拼接成一个字符串进行sha1加密 var tempStr = array.join(''); const hashCode = crypto.createHash('sha1'); //创建加密类型 var resultCode = hashCode.update(tempStr,'utf8').digest('hex'); //对传入的字符串进行加密
//4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 if(resultCode === signature){ res.send(echostr); }else{ res.send('mismatch'); } });
module.exports = router;
|
启动服务,并在测试号申请页面,填入URL和Token进行验证。验证成功后便可以继续下一步了。
JS接口安全域名
暂时还未用到,填写URL所在域名即可。
扫一扫下方小程序码或搜索Tusi博客
,即刻阅读最新文章!