wxCloudToken.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. var __importStar = (this && this.__importStar) || function (mod) {
  3. if (mod && mod.__esModule) return mod;
  4. var result = {};
  5. if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
  6. result["default"] = mod;
  7. return result;
  8. };
  9. Object.defineProperty(exports, "__esModule", { value: true });
  10. // 由定时触发器触发时(TRIGGER_SRC=timer):优先使用 WX_TRIGGER_API_TOKEN_V0,不存在的话,为了兼容兼容旧的开发者工具,也是使用 WX_API_TOKEN
  11. // 非定时触发器触发时(TRIGGER_SRC!=timer): 使用 WX_API_TOKEN
  12. const cloudbase_1 = require("../cloudbase");
  13. const utils = __importStar(require("./utils"));
  14. const fs = __importStar(require("fs"));
  15. exports.CLOUDBASE_ACCESS_TOKEN_PATH = '/.tencentcloudbase/wx/cloudbase_access_token';
  16. function getWxCloudToken() {
  17. const { TRIGGER_SRC, WX_TRIGGER_API_TOKEN_V0, WX_API_TOKEN, WX_CLOUDBASE_ACCESSTOKEN = '' } = cloudbase_1.CloudBase.getCloudbaseContext();
  18. const wxCloudToken = {};
  19. if (TRIGGER_SRC === 'timer') {
  20. wxCloudToken.wxCloudApiToken = WX_TRIGGER_API_TOKEN_V0 || WX_API_TOKEN || '';
  21. }
  22. else {
  23. wxCloudToken.wxCloudApiToken = WX_API_TOKEN || '';
  24. }
  25. // 只在不存在 wxCloudApiToken 时,才尝试读取 wxCloudbaseAccesstoken
  26. if (!wxCloudToken.wxCloudApiToken) {
  27. wxCloudToken.wxCloudbaseAccesstoken = WX_CLOUDBASE_ACCESSTOKEN || loadWxCloudbaseAccesstoken();
  28. }
  29. return wxCloudToken;
  30. }
  31. exports.getWxCloudToken = getWxCloudToken;
  32. const maxCacheAge = 10 * 60 * 1000;
  33. const cloudbaseAccessTokenInfo = { token: '', timestamp: 0 };
  34. function loadWxCloudbaseAccesstoken() {
  35. if (cloudbaseAccessTokenInfo.token && Date.now() - cloudbaseAccessTokenInfo.timestamp < maxCacheAge) {
  36. return cloudbaseAccessTokenInfo.token;
  37. }
  38. try {
  39. if (utils.checkIsInEks() && fs.existsSync(exports.CLOUDBASE_ACCESS_TOKEN_PATH)) {
  40. cloudbaseAccessTokenInfo.token = fs.readFileSync(exports.CLOUDBASE_ACCESS_TOKEN_PATH).toString();
  41. cloudbaseAccessTokenInfo.timestamp = Date.now();
  42. return cloudbaseAccessTokenInfo.token;
  43. }
  44. }
  45. catch (e) {
  46. console.warn('[ERROR]: loadWxCloudbaseAccesstoken error: ', e.message);
  47. }
  48. return '';
  49. }
  50. exports.loadWxCloudbaseAccesstoken = loadWxCloudbaseAccesstoken;