技术要点分析
微信号开发:
没钱买服务器的办法:
- Ngrok内网转发->TUNNEL
- PageKite花生壳
- ntralhook
- QQ浏览器,应用中心,开发者工具->微信
Ngrok内网转发->TUNNEL
- 开个服务器
python -m SimpleHTTPServer 3100
php -S localhost:8000
http-server [path] [options]
2 . 运行TUNNEL
Win
ngrok http 3000
Mac
./ngrok -config ngrok.cfg -subdomain hanxiao-wechat(子域名,需要付费) 3100(端口过大,会转发失效)
nodejs的localtunnel服务
npm install -g localtunnel
lt --port 3100
验证过程
使用koa框架(不用express)的原因:代码精简,易懂,对多次的异步交互更适合
app.js
'use strict'
var Koa = require('koa');
var sha1 = require('sha1');
var config = {
wechat:{
appID:'wx8d16f44e1590e268',
appSecret:'d53deca733621c0782ec9e570e643dec',
token:'weixingongzhonghao'
}
}
var app = new Koa()
app.use(function *(next){
console.log(this.query)
var token = config.wechat.token
var signature = this.query.signature
// 随机字符串
var nonce = this.query.nonce
var timestamp = this.query.timestamp
//
var echostr = this.query.echostr
// 转字符串排序
var str = [token,timestamp,nonce].sort().join('')
// 加密
var sha = sha1(str)
if(sha === signature){
this.body = echostr + ''
}else{
this.body = 'wrong'
}
})
app.listen(3000)
console.log('Listening:3000')
首先映射端口
node -V 需要11以上才能使用Koa
npm install koa sha1
node --harmony app.js
另一种方法
npm i -g localtunnel(不支持自定义域名,映射服务中断就失去该映射)
lt --port 3000
消息与回复
注意事项
添加中间件(Genertor)
access_token
- 更新后,原来的access_token就会失效
- 每两个小时(7200s)失效,需重新获取
报错解决:http://www.imooc.com/article/17755