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) - ) * ; 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效果图:

越努力,越幸运。
Node.js实现简易的获取access_token的更多相关文章
- 使用Node.js实现简易MVC框架
在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...
- [转] 使用Node.js实现简易MVC框架
在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...
- node.js 开发简易的小爬虫
node.js 开发简易的小爬虫 最近公司开发一款医药类的软件,所以需要一些药品的基础数据,所以本人就用node.js写一个简易的小爬虫,并写记录这个Demo以供大家参考. 一.开发前的准备: 1, ...
- koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...
- Node.js、Express框架获取客户端IP地址
Node.js //传入请求HttpRequest function getClientIp(req) { return req.headers['x-forwarded-for'] || req.c ...
- 使用node.js制作简易爬虫
最近看了些node.js方面的知识,就像拿它来做些什么.因为自己喜欢摄影,经常上蜂鸟网,所以寻思了一下,干脆做个简单的爬虫来扒论坛的帖子. 直接上代码吧. var sys = require(&quo ...
- 《基于Node.js实现简易聊天室系列之详细设计》
一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次 ...
- [js高手之路]Node.js实现简易的爬虫-抓取博客文章列表信息
抓取目标:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要实现的功能: 抓取文章标题,超链接,文章摘要,发布时间 需要用到的库: node.js自带的http库 ...
- node.js一行一行的获取txt文件内容
node.js一行一行获取text文件代码: const readline = require('readline');//Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模 ...
随机推荐
- CentOS7下group和group-、passwd与passwd-之间的区别
今天查看/etc/group时,意外发现另外一个/etc/group-,查看了一下2个文件,发现大部分内容是一致的.这就有点搞不懂了,后面这个group是有啥用呢呢?diff对比了一下,相比group ...
- SQLite实现内存键值存储
SQLite数据文件往Linux内存文件系统/dev/shm/data.sqlite3一放,就是内存级读写性能的SQL系统.用SQLite实现内存键值存储:CREATE TABLE IF NOT EX ...
- C++大小写转换和性能(C语言,C++,API,STL一共4种方法)
大小写转换和性能 前言 本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题. 不考虑范围 ...
- [每天记录一个Bug]Cell中由于block加载网络请求产生的复用
Bug 出现场景: cell中使用加载图片的网络请求出现复用,截图如下: 复用原因: Cell Model中只有一个用户的uid,所有用户相关信息:例如头像\名称\信息等是通过 ...
- orm单表操作
二.orm简介 ORM:object relation mapping (ORM是“对象-关系-映射”的简称) MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦, ...
- vue结合Ant Design实现后台系统的权限分配(支持无限子级嵌套)
最近公司的业务需要,要做一个后台管理系统的管理系统类似于这样子 功能需求如下: 左边是权限菜单,右边对应的是具体权限. 1.父级权限菜单选中,父级权限菜单的权限包括其中所有子级权限菜单的权限也要选中, ...
- unity中实现物体在一定角度范围内来回旋转
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotate : ...
- 爱,死亡和机器人(Love,Death&Robots)
从我自己的角度来讲,我真的是很喜欢这部短片,奇幻,科幻,喜剧交叉在一起构成了这18部短片.精彩绝伦,我只能这么去形容. 但是有没有不足呢?客观的来说,也存在不足,过度的吹捧使得有些人神话了它,认为立意 ...
- TensorFlow 2.0 入门教程实战案例
中文文档 TensorFlow 2 / 2.0 中文文档 知乎专栏 欢迎关注知乎专栏 https://zhuanlan.zhihu.com/geektutu 一.实战教程之强化学习 TensorFlo ...
- python数据库-MySQL数据库的增删改查基本操作(49)
一.数据库基础 表 table:数据是保存在表内,保存在一个表内的数据,应该具有相同的数据格式 行:行用于记录数据 记录:行内的数据 列:列用于规定数据格式 字段:数据的某个列 主键:唯一地标识表中的 ...