从上一篇文章中,仔细观察一下目录结构,不难发现,routes路由这块,就是咱们放node服务定义放置路由的目录,本来生成了一个users文件,暂时用处不大,咱们即可以直接更改这个路由。如图,分别更改一个getAccessToken.js。node
而后咱们到app.js中,把入口配置更改一下。express
完毕,把文件更新到服务器,$ nodemon npm start
启动服务npm
而后到服务器输入:你的ip/getAccessToken,验证一下,若是是下图所示,那么恭喜你,第一步成功了!json
好的,上一步咱们已经完成了接口,接下来就完善这个接口吧。
首先,建议先读一下微信的文档。了解一下access_token。api
以上验证后,继续建立一个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" } }
var express = require('express'); var https = require('https'); // 引入https模块 var util = require('util'); // 引入util工具包格式化路径 var fs = require('fs'); // 引入fs更新本地文件 var router = express.Router(); var accessTokenJson = require('../data/access_token'); var configJson = require('../data/config'); /* GET users listing. */ router.get('/', 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('/home/nodeApp/wxApp/data/access_token.json', JSON.stringify(accessTokenJson)); //将获取后的 access_token 返回 resolve(accessTokenJson.access_token); } else { //将错误返回 resolve(result); } }) }).on('error',function(err){ reject1(err); }); } else { //将本地存储的 access_token 返回 resolve(accessTokenJson.access_token); } }).then(function(data) { res.send(data); }); }); module.exports = router;
看到以下信息,就完成了微信
欢迎各位小伙伴补充。app