NodeJS接口调用凭证access_token的缓存与更新
分类专栏: Node
简介 NodeJS接口调用微信小程序凭证access_token的缓存与更新
<pre class="ql-syntax" spellcheck="false">/*
* @Author: your name
* @Date: 2021-05-26 16:07:07
* @LastEditTime: 2021-05-26 17:02:48
* @LastEditors: Please set LastEditors
* @Description: 接口调用凭证access_token的缓存与更新
* @FilePath: \bazai_music_api\utils\getAccessToken.js
*/
const fs = require('fs')
const path = require('path')
const fileName = path.resolve(__dirname, './access_token.json')
console.log('fileName', fileName)
const axios = require('axios')
const APPID = '*******'
const APPSECRET = '*****'
const URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`
const updateAccessToken = async () => {
const result = await axios.get(URL)
// 写文件
if (result.data.access_token) {
fs.writeFileSync(fileName, JSON.stringify({
access_token: result.data.access_token,
createtime: new Date()
}))
} else {
// 更新access_token
await updateAccessToken()
}
}
const getAccessToken = async () => {
// 读取文件
try {
const readRes = fs.readFileSync(fileName, 'utf-8')
const readObj = JSON.parse(readRes)
const createTime = new Date(readObj.createTime).getTime()
const nowTime = new Date().getTime()
// 是否过期
if ((nowTime - createTime) / 1000 / 60 / 60 >= 2) {
await updateAccessToken()
await getAccessToken()
}
return readObj.access_token
} catch (error) {
await updateAccessToken()
await getAccessToken()
}
}
// 间隔2小时重新获取,提前200秒
setInterval(async () => {
await updateAccessToken()
}, 7000 * 1000)
// updateAccessToken()
// console.log(getAccessToken())
</pre>
分享到:
转载:
喜欢 1
收藏
上一篇:
微信小程序的相关原理知识
暂无评论信息
- 相关文章
- 文章推荐
-
Docker 常用命令
docker目前代替虚拟机使用的一个容器,灵活好用。
-
半导体短缺即将结束?分析师:如果没有 1 美元芯片会影响更多
德勤咨询(Deloitte Consulting)的芯片分析师认为,随着芯片行业资本支出的增加,需求度较高的工厂已经开工,预示着短缺情况即将结束。
-
眼镜试戴的装饰效果
开发眼镜类产品的时候需要使用试戴的功能,这里就有你需要的学习资料哦!
-
亚马逊推出“无需收银员”的新技术,以此帮助品牌和广告商提高销量
北京时间 6 月 30 日早间消息,据报道,亚马逊发明了一种无需收银员的技术,可以加快人们去杂货店或便利店的速度。现在,该公司希望利用这个跟踪系统来帮助品牌和广告商提高销量。&
- 点击排行
- 站长推荐
- 猜你喜欢
- 网站信息
- 站内问答:12篇
- 站内文章:213篇
- 建站时间:已运行1217天
- 备案号: 浙ICP备2022018799号
- 语言:
- English(USA)
- French(FR)
- Chinese(ZH)
无数据