代码
// token 换取文件
const axios = require('axios')
// const dbs = require('../models/mo')
const Config = require('../models/config')
const token = () => new Promise(async (res, rej) => {
const times = (new Date()).getTime() //当前时间戳
axToke = (cd) => {
let config = {
appid: 'wxf37a0371d5c7a359',
secret: '4802d7147d421ad8e775f95ca98d7180',
grant_type: 'client_credential'
}
let url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + config.appid + '&secret=' + config.secret
axios.get(url).then(res => {
cd(res.data)
}, err => {
cd(err)
})
}
// let accessTokes = await dbs.findo(Config, {})
let accessTokes = await Config.findOne({})
console.log('查询tokes', accessTokes, times);
if (accessTokes.accessToken == null) {
axToke(cd => {
let key = {
_id: accessTokes._id
}
let obj = {
'$set': {
accessToken: cd.access_token, //toke
tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间
}
}
Config.update(key, obj).then(r => {
Config.findOne({}).then(rs => {
console.log('新增tokes', rs);
res(rs)
})
})
})
} else if (accessTokes.tokeTime <= times) {
console.log('toke过期', accessTokes.tokeTime, times);
axToke(cd => {
let key = {
_id: accessTokes._id
}
let obj = {
'$set': {
accessToken: cd.access_token, //toke
tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间
}
}
Config.update(key, obj).then(r => {
Config.findOne({}).then(rs => {
console.log('新增tokes', rs);
res(rs)
})
})
})
} else {
console.log('toke有效', accessTokes);
res(accessTokes)
}
})
module.exports = token