代码

  1. // token 换取文件
  2. const axios = require('axios')
  3. // const dbs = require('../models/mo')
  4. const Config = require('../models/config')
  5. const token = () => new Promise(async (res, rej) => {
  6. const times = (new Date()).getTime() //当前时间戳
  7. axToke = (cd) => {
  8. let config = {
  9. appid: 'wxf37a0371d5c7a359',
  10. secret: '4802d7147d421ad8e775f95ca98d7180',
  11. grant_type: 'client_credential'
  12. }
  13. let url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + config.appid + '&secret=' + config.secret
  14. axios.get(url).then(res => {
  15. cd(res.data)
  16. }, err => {
  17. cd(err)
  18. })
  19. }
  20. // let accessTokes = await dbs.findo(Config, {})
  21. let accessTokes = await Config.findOne({})
  22. console.log('查询tokes', accessTokes, times);
  23. if (accessTokes.accessToken == null) {
  24. axToke(cd => {
  25. let key = {
  26. _id: accessTokes._id
  27. }
  28. let obj = {
  29. '$set': {
  30. accessToken: cd.access_token, //toke
  31. tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间
  32. }
  33. }
  34. Config.update(key, obj).then(r => {
  35. Config.findOne({}).then(rs => {
  36. console.log('新增tokes', rs);
  37. res(rs)
  38. })
  39. })
  40. })
  41. } else if (accessTokes.tokeTime <= times) {
  42. console.log('toke过期', accessTokes.tokeTime, times);
  43. axToke(cd => {
  44. let key = {
  45. _id: accessTokes._id
  46. }
  47. let obj = {
  48. '$set': {
  49. accessToken: cd.access_token, //toke
  50. tokeTime: times + (cd.expires_in - 100) * 1000 // toke到期时间
  51. }
  52. }
  53. Config.update(key, obj).then(r => {
  54. Config.findOne({}).then(rs => {
  55. console.log('新增tokes', rs);
  56. res(rs)
  57. })
  58. })
  59. })
  60. } else {
  61. console.log('toke有效', accessTokes);
  62. res(accessTokes)
  63. }
  64. })
  65. module.exports = token