• 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效果图:

    越努力,越幸运。

  • 相关阅读:
    精品绿色便携软件下载站
    DIV + CSS
    CSS基础
    尘封往事
    最近ゲームにはまってる。
    比水更浓的水
    有些事我得记下来
    一年前的今晚,注定是个岔路口.
    放下全世界
    超级保镖:国外精品个人防火墙亲密接触(2) java程序员
  • 原文地址:https://www.cnblogs.com/pingtouge/p/11232121.html
Copyright © 2020-2023  润新知