NodeJS 微信公共号开发 - 获取并缓存 access_token 和 jsapi_ticket

转载 (原文地址) supperdsj 教程 NodeJS 253阅读 2018-04-27 21:34:50 举报

背景

使用 NodeJS 进行微信公共号开发,后端调用各接口时都需使用 access_token,前端调用 js-api 则需要后端根据 jsapi_ticket 生成 signature。
由于 access_tokenjsapi_ticket 都有 7200 秒的有效时间和每日的调用次数上限,所以对两者都需要定时调用,并实现服务器缓存。

修改公众号JS接口安全域名

wt1
进入设置 => 公共号设置 => 功能设置来设置JS接口安全域名

wt2
设置JS接口安全域名时需从将微信提供的 txt 文件上传至填写域名或路径下

实现 mongoose 的 model 来存储 access_tokenjsapi_ticket

access_tokenjsapi_ticket 均有 7200 秒的有效时间和每日的调用次数上限,则需要将两者混存到服务器。
本文以 mongoose 存储到 mongodb 作为解决方案,具体 mongoose 的使用会在日后其他博文中进行讨论。model 具体如下:

实现 access_tokenjsapi_ticket 的获取和更新

首先实现 updateAccessToken 函数从微信获取 access_tokenjsapi_ticket 。先以微信公共号的 id 和 secret 获取 access_token,然后再根据 access_token 获取 jsapi_ticket,在两者皆获取并计算过期时间后使用 mongoose 存储到 mongodb,最后再存储到 process 内。
然后实现 asyncToken 函数通过 mongoose 将 mongodb 内存储的数据获取后,以过期时间作为依据来决定是调用 updateAccessToken 还是更新 process 内数据。
最后再使用 setInterval 进行 asyncToken 的循环调用即可。
具体代码如下

生成微信 js 所需的 signature

wx.config 调用时候需要根据 jsapi_ticket 生成 signature,具体接口代码如下:

可访问 微信JS接口签名校验工具 验证 signature

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复