后端用express获取微信AccessToken2022-04-09

创建一个config.json文件,用于存放基本配置信息,内容如下:

{"token":"WeiChartToken","appID":"wx00********396",//appid 微信公众平台查看"appScrect":"326466*********e18f",//appScrect 微信公众平台查看"apiDomain":"https://api.weixin.qq.com/","apiURL":{"accessTokenApi":"%scgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"}}

创建json文件,存放access_token




2. 在js中引入json,并在接口输出测试

app.js文件增加

const express = require('express');

const mysql = require('mysql');

var accessTokenJson = require('./access_token');

var https = require('https'); // 引入https模块

var util = require('util'); // 引入util工具包格式化路径

var fs = require('fs'); // 引入fs更新本地文件

var configJson = require('./config');

app.get('/getAccessToken', function(req, res, next) {

new Promise(function(resolve,reject) {

  //获取当前时间

  var currentTime = new Date().getTime();

  //格式化请求地址

  var url = util.format(configJson.apiURL.accessTokenApi,configJson.apiDomain,configJson.appID,configJson.appScrect);


  //判断 本地存储的 access_token 是否有效

  if (accessTokenJson.access_token === "" || accessTokenJson.expires_time < currentTime) {

      https.get(url, function(res){

          var buffer = [],result = "";

          // 监听 data 事件

          res.on("data",function(data){

              buffer.push(data);

          });

          res.on("end",function() {

              // result = JSON.stringify(Buffer.concat(buffer,buffer.length).toString('utf-8'));


              var body = Buffer.concat(buffer);

              result = JSON.parse(body);

              if (body.indexOf("errcode") < 0) {

                  accessTokenJson.access_token = result.access_token;

                  accessTokenJson.expires_time = new Date().getTime() + (parseInt(result.expires_in) - 200) * 1000;

                  //更新本地存储的

                  fs.writeFile('/usr/nodeServer/nodeServer/access_token.json', JSON.stringify(accessTokenJson),(err) => {

                  if (err) throw err;

                  console.log('It\'s saved!');

                });

                  //将获取后的 access_token 返回

                  resolve(accessTokenJson.access_token);

              } else {

                  //将错误返回

                  resolve(result);

              }

          })

      }).on('error',function(err){

          reject(err);

      });

  } else {

      //将本地存储的 access_token 返回

      resolve(accessTokenJson.access_token); 

  }

}).then(function(data) {

  res.send(data);

});

})

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容