123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const axios = require('axios');
- const config = require('../../config.json');
- const path = require('path');
- const Logger = require('../../lib/Logger');
- let token = '';
- let tokenExpiresAt = 0; // 用于跟踪token的过期时间
- const logger = new Logger(path.join(__dirname, '../../logs/WXWork.log'), 'INFO');
- const GetToken = async () => {
- const currentTime = Date.now();
- // 如果 token 未过期,直接返回 token
- if (token && tokenExpiresAt > currentTime) {
- return Promise.resolve(token);
- }
- // 否则重新获取 token
- try {
- const response = await axios.get('https://qyapi.weixin.qq.com/cgi-bin/gettoken', {
- params: {
- corpid: config.wxwork.corpid,
- corpsecret: config.wxwork.corpsecret
- }
- });
- const body = response.data;
- if (body.errcode === 0) {
- token = body.access_token;
- // 设置新的过期时间
- tokenExpiresAt = currentTime + (body.expires_in * 1000);
- logger.info('获取企业微信 token 成功!');
- return token;
- } else {
- logger.error(`获取企业微信 token 失败!原因:${body.errmsg}`);
- throw new Error(body.errmsg);
- }
- } catch (error) {
- logger.error(`获取企业微信 token 失败!原因:${error.message}`);
- throw error;
- }
- };
- module.exports = GetToken;
|