小程序access_token服务器存储处理
2021/5/19 22:29:29
本文主要是介绍小程序access_token服务器存储处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
小程序access_token服务器存储处理
适合小程序云开发 也适合h5开发
const rp = require("request-promise"); // 发送请求的 const APPID = 'wxf6a3e4dfd65f066b'; // appid const APPSECRET = 'f27efff51cc46b83ca5eb8f66cbd6903' // 小程序的秘钥 const URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`; const fs = require('fs'); const path = require('path') const fileName = path.resolve(__dirname, './access_token.json') const upadateAccessToken = async () => { // 同发送请求;调用小程序服务,获取access_token const resStr = await rp(URL) const res = JSON.parse(resStr) // 获取去到access_token 后,将access_token 进行保存,保存到json文件中 // --->写文件 if (res.access_token) { fs.writeFileSync(fileName, JSON.stringify({ access_token: res.access_token, createTime: new Date() })) } else { await upadateAccessToken() } } const getAccessToken = async () => { // 成功 try { // 读文件 // ---> 参二:如果没值 返回的是 buffer 存的二进制数据;需要转字符串;如果有值;那么返回对应的类型utf8 const readRes = fs.readFileSync(fileName, 'utf8'); const readObj = JSON.parse(readRes); // 场景:服务宕机;宕机时间超过access_token 的过去时间 // 解决宕机问题:用获取token时间与当前 调用方法时间比较;是否大于2小时 const createTime = new Date(readObj.createTime).getTime(); const nowTime = new Date().getTime(); if (nowTime - createTime >= 7200 * 1000) { // 宕机时间太长;access_Token 过期 --->更新access_token-->再获取token await upadateAccessToken(); await getAccessToken(); } return readObj.access_token } catch (err) { // 失败 // 如果读文件失败 那么就进行跟新 access_token 再次获取 await upadateAccessToken(); await getAccessToken(); } } // 防止过期 // ----> 做一个定时触发器;解决过期问题 setInterval(() => { upadateAccessToken(); }, (7200 - 300) * 1000) // 提前5分钟根性 module.exports = getAccessToken // 获取token 可能遇到问题 // 1:获取失败问题:在catch 中更新 // 2:过期问题--->定时器 // 3:宕机问题--->用时间判断处理
这篇关于小程序access_token服务器存储处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-19微信小程序项目中miniprogram_npm文件跟node_modules文件的差别-icode9专业技术文章分享
- 2024-08-27小程序 单行显示,超出部分省略号显示的方法代码-icode9专业技术文章分享
- 2024-08-27微信小程序如何获取到特种设备的刘海屏高度-icode9专业技术文章分享
- 2024-08-27微信小程序如何获取苹果手机底部一横线高度信息方法代码-icode9专业技术文章分享
- 2024-08-27微信小程序 顶部状态栏标签背景为none但还是看不到状态栏什么原因-icode9专业技术文章分享
- 2024-08-21微信小程序全栈入门:从零开始的一站式指南
- 2024-08-21微信小程序入门:轻松打造你的第一款小程序
- 2024-08-10如何实现在微信小程序内卖药?线上药店商城小程序怎么做?
- 2024-08-08uniapp小程序无痛刷新token方法-icode9专业技术文章分享
- 2024-08-08在小程序中使用canvas绘制两个可拖拽交换位置的单元格代码示例-icode9专业技术文章分享