從上一篇文章中,仔細觀察一下目錄結構,不難發現,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