0.0.1-test-1 • Published 7 years ago
wanhu-wechat-server v0.0.1-test-1
x-weixin
开发者文档
开发测试准备
- /callback: 第三方平台相关信息推送
- /$APPID$/callback: 公众号相关信息推送
- 服务器ip需要加入白名单
- 测试公众号需要加入白名单
开发环境
技术栈
typescript
express
+mongoDB
- http请求:
request
- 文件上传:
multer
- 跨域通讯:
jsonwebtoken
- 日志:
morgan
+winston
+winston-daily-rotate-file
- 安全:
helmet
本地调试 - 方便debug
NatApp 映射服务器地址到本地
数据获取&存储
能使用微信获取存储,使用微信。不能使用则本地数据库
- 底层Promise化,方便调用时使用async/await
- mongoose
(<any>mongoose).Promise = global.Promise;
- request
request-promise-native
- 自己封装
import {get, post} from "request";
new Promise((resolve, reject) => {
get(url, {json: true}, (err, httpResponse, body) => {
if (body.errcode) {
reject(body);
} else {
resolve(body);
}
})
});
日志
- console: debug级别
- file: info & error级别
合并并日期输出
- http: morgan
- other: winston
使用插件 winston-daily-rotate-file
// 详情见 /server/util/logger.ts
app.use(morgan('combined', {stream: logger.stream}));
typescript 相关说明
lib.d.ts
分离lib.ts
的interface到lib.d.ts
,然后在lib.ts
头部使用
/// <reference path="./lib.d.ts" />
- 自动添加"use strict";
// tsconfig.json
{
"compilerOptions":{
"alwaysStrict": true
}
}
cross-env
:解决不同系统设置环境变量
cross-env NODE_ENV=dev CONFIG_DIR=./server/config PORT=12345 node ./bin/www"
server
1. 微信推送第三方平台相关信息
/callback
- 公众号授权信息
- 公众号更新授权信息
- 公众号取消授权信息
component_verify_ticket
2. 微信推送粉丝发给公众号相关信息
/$APPID$/callback
代替公众号接受用户发送的信息
- 关注,取消关注
- 消息
- ...
3. 用户ID加密解密
- session
- jwt
4. access_token过期处理
过期时间: 26060 = 7200
component_verify_ticket
==> component_access_token
authorizer_refresh_token
==> authorizer_access_token
定时器刷新
- 存储时,记录过期时间。获取时,判断是否过期。
- 存储时,使用Mongo过期索引,过期自动删除。获取时,判断是否存在。
5. API
详情见/doc
文件夹
6. 日志处理
client
暂时废弃
demo
TODO 样板
admin/login
TODO 登录后,授权公众号信息管理与统一
1. 微信图片防盗链应对方案
相关名词
- Authorization 授权
- Authorizer 授权方
- Component 第三方平台
素材类型
- text
- image
- voice
- video: 视频消息(包含描述和标题)
- mpvideo: 视频消息(video转换后, 仅有media_id)
- shortvideo
- news: 图文消息(原始内容,无media_id)
- mpnews: 图文消息(已经在素材库中,含media_id)
- location: 不是事件的location
- link
事件类型
- subscribe
- unsubscribe
- SCAN
- LOCATION
- CLICK
- VIEW
资料
0.0.1-test-1
7 years ago