订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证后每天可以群发一条消息,可达到宣传效果,构建与读者之间更好的沟通和管理模式。
服务号:主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发 4 条消息。给企业和组织提供更强大的业务服务与用户管理能力。
企业号:主要用于公司内部通讯使用,用来管理内部企业员工、团队。
下图展示了接口权限的区别,虽然是官方的图,但不是时分准确了,详细请看 、
认证费用 300 元 / 次,需要年审,即 300 元 / 年
详细请查看
,这里选择的是 v4.5.0 LTS,
- node.js
,
- express
- $ npm install express -g
,
- $ express WechatDemo
,
- $ cd WechatDemo
,
- $ npm install
,执行完以上命令,一个最基本的基于 express 的 node 项目已经搭建好了,此时访问
- $ npm start
应该能看到 express 初始化的页面。
- localhost:3000
项目初始化时,目录是这样的:
项目最终目录结构:
- var routes = require('./app_server/routes/index');
- var users = require('./app_server/routes/users');
- //...
- app.set('views', path.join(__dirname, 'app_server', 'views'));
,save 是为了同步到 package.json。
- $ npm install nodemon --save
官网:、,开始开发 / 接入指南 中有讲到如何接入。
用户与微信公众号交互时,主要有两种形式:
对于第一种,为了安全起见(比如可能有心怀不轨的人故意给开发者的服务器发送请求,取消某人的关注,这时开发者的程序将该用户的 openid 移除,此后该用户再也收不到公众号的消息,除非开发者主动刷新用户列表从微信服务器取回来。更甚者可能会对支付等比较敏感的操作进行模拟请求),微信服务器每次发来的请求都带了加密的参数,通过特定的算法可以验证该请求来自微信服务器,算法在开发者文档里写得很清楚了,在接入认证的时候就需要用这种算法响应一次微信服务端的请求。
这里采用微信官方开发的一个 npm 包 wechat 来处理请求,这意味着可以不写那套验证算法。
,关于 wechat 的使用方法,请看,写得很详细。另外可以
- $npm install wecaht --save
另外,可以申请一个测试号,测试号几乎有所有的接口权限。
微信公众号接入的时候,是需要一台能够被微信服务器访问到的服务器,如果采用本地开发,localhost 不能被微信服务器访问到,那么就要想办法把本地服务器暴露出去,这里采用花生壳将本地服务器映射到外网 (注册时需要付费,我注册时是 15 元),但不是很稳定,偶尔映射会失败,需要重新启动软件或电脑。因为微信服务器需要接入到开发者服务器的 80 端口或者 443 端口,如果这两个端口都被占用,可用花生壳将本地 3000 的端口映射为外网 80 端口,软件挺人性化的,一个按键即可映射到外网。
开发者每次请求微信服务器提供的接口 (除了获取 access_token 的接口),都需要在请求里带上 access_token 这个参数,但是这个参数的有效期只有 7200 秒,也就是两个小时,所以需要定期(setTimeout) 去请求 access_token,但是如果服务器重启了,setTimeout 也就失效了,官方建议用一台独立的服务器专门获取 access_token,但如果不用独立的服务器,可以将 access_token 和 expired_in 保存到数据库。可以查看源码来了解详细的过程。
自定义 Logger API
等级默认为'info',接收一个字符串或者一个对象,对象会被序列化成对应的格式
- logger.log
与 logger.log 的作用是一样的
- logger.info
level 为 warn
- logger.warn
level 为 error
- logger.error
自定义 log 是在 winston 的基础上写出来的,winston 没有自带 Mysql log,可以自定义,详情请看 。
关于上面 log 的第 2 点,可以查看:
自定义 log 也可以
来源: http://www.cnblogs.com/laizhihui/p/5785125.html