Node.js實現簡易的獲取access_token


還是老樣子,在自學node.js的道路上走得坑坑窪窪,按住了躁動的自己,調整好心情 ,ready........Go....! 

首先在項目里新建config.json,其中 appid 與 appscrect 兩個參數 位於 微信公眾平台 左側菜單的基本配置中:

代碼塊如下:

{
    "token": "wechat",
    "appID": "wx376********7243e",
    "appScrect": "8962157f61*************1e04d244a",
    "apiDomain": "https://api.weixin.qq.com/",
    "apiURL": {
        "accessTokenApi": "%scgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"
    }
}

接下來我新建accessToken.js,主要用於封裝獲取access_tocken的方法(名字隨意)

一成不變,依賴選擇:

代碼塊如下,這里引入的配置config就是上面基本配置:

'use strict';
// ↑ 設置為嚴格模式

//引入依賴
const util = require("util")
const https = require("https");
//引入配置文件
const config = require("../config");

且,我這里定義的是全局變量用來存token,這里的存取的方法有很多種;比如:存為cookie,session,更新本地存儲等......

代碼塊如下:

//全局
const accessTokenJson = {
    access_token: "",
    expires_time: ""
};

接下來就是獲取access_tocken的方法:

代碼塊如下:

/** 
 * 獲取access_tocken的方法
*/
const auth = {
    getAccessToken: err => {
        return new Promise(resolve => {
            //獲取當前時間
            const currentTime = new Date().getDate();
            //格式化請求地址
            let url = util.format(config.apiURL.accessTokenApi, config.apiDomain, config.appID, config.appScrect);

            if (accessTokenJson.access_token == "" || accessTokenJson.expires_time < currentTime) {
                https.get(url, res => {
                    const buffer = [];
                    //監聽
                    res.on('data', data => {
                        buffer.push(data);
                    });
                    res.on('end', err => {
                        let data = Buffer.concat(buffer).toString('utf-8');
                        let result = JSON.parse(data);

                        console.log(result);
                        //放入全局
                        accessTokenJson.access_token = result.access_token;
                        accessTokenJson.expires_time = new Date().getTime() + (parseInt(result.xpires_in) - 200) * 1000;

                        resolve(accessTokenJson.access_token);
                    });
                }).on("error", err => {
                    console.log(err)
                });
            } else {
                resolve(accessTokenJson.access_token);
            }
        });
    }
};

//test 主函數
auth.getAccessToken();

/** 暴露可供外部訪問的接口
 * module.exports = auth;
  */

最后,這里直接 node accessToken.js 就Ok了。

PS:最后注釋:暴露可供外部訪問的接口 可以理解為這個可以封裝為一個單一的方法,供其調用。

例如,在其他js中可以直接引入:

代碼塊如下:

'use strict';

const token = require("./accessToken");

token.getAccessToken().then(res => {
    //console.log(res)
}).catch(err => {
    //console.log(err);
})

獲取access_token效果圖:

 

越努力,越幸運。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM