位置: 编程技术 - 正文

详解Node.js access_token的获取、存储及更新(详解金球奖之争)

编辑:rootadmin

推荐整理分享详解Node.js access_token的获取、存储及更新(详解金球奖之争),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:详解中国女足出线形势,详解杭州亚运会会徽和口号,详解增发万亿国债细节,详解增发万亿国债细节,详解中国航天三垂一远,详解增发万亿国债细节,详解增发万亿国债细节,详解杭州亚运会会徽和口号,内容如对您有帮助,希望把文章链接给更多的朋友!

一、写在前面的话

上一篇文章中,我们使用 Node.js 成功的实现了接入微信公众平台功能。在这篇文章中,我们将实现微信公众平台一个非常重要的参数 access_token ,它是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token。

在开始之前,让我们先按捺住自己激动的心情、调整好呼吸,因为我们要将上一篇文章的代码重新整理一下。一个好的项目结构,更能有助于我们理清业务逻辑以及将来维护代码的便捷。OK?

二、整理项目结构

1.打开我们的项目,并在项目中添加文件夹,命名为 wechat ,如图:

2.在 wechat 文件夹中添加文件并命名为 wechat.js。wechat.js 主要用于封装开发微信公众平台的所有方法。首先我们构建这个模块的结构,代码如下:

严格模式:是在 ECMAScript 5 中引入的概念。严格模式是为 Javascript 定义了一种解析与执行模型。

module.exports :暴露接口用于外部操作。实际上我们定义模块后,使用 node.js 的 require 引用时,node.js 会自动在我们定义的模块外层加入以下代码

相信对于有过 javascript 开发经验的同学,上面的代码并不陌生。我们可以将它理解为一个闭包,是一个匿名方法的调用,避免污染全局变量。

小知识:

在上面的代码中,除了我们所使用的 module.exports 对象,还有另一个用于暴露接口的 变量 exports (官方文档将 module.exports 称为对象,exports 称为 属性,我在这里也就这样称呼了),那么 module.exports 与 exports 有什么区别呢?

module.exports 对象是由模块系统创建的,exports 变量是在模块的文件级别作用域内有效的,它在模块被执行前被赋于 module.exports 的值。——来自Node.js官方文档

也就是说 exports 是 module.exports 的引用,而 module.exports 才是真正用于暴露接口的对象。 exports 赋值的所有属性与方法都赋值给了 module.exports 对象。

如果 module.exports 与 exports 将值赋值给了相同的属性,则按照赋值的先后顺序,取最后一个赋值;如果我们给 module.exports 赋值的是一个对象,则会覆盖 exports 的所有方法与属性。

因此我们在暴露接口的使用上,如果只是单一属性或方法的话,建议使用exports.属性/方法,要是导出多个属性或方法或使用对象构造方法,建议使用 module.exports。

3.为 WeChat 对象添加一个方法 auth,并将 app.js 中的验证方法粘贴进去

4.整理 app.js 文件的中的代码,如下:

嗯!这样代码看着是不是舒服多了呢。机智如我

剩下的就是去微信公众平台接入验证了,在上一篇文章中有详细的教程,这里我就不再演示了

就是这么懒

三、access_token的获取、存储及更新

1.微信文档步骤

详解Node.js access_token的获取、存储及更新(详解金球奖之争)

在开始码代码之前,我们依然是先理清实现的思路,在开始编写实现代码。打开 微信帮助文档 ,点击左侧菜单中的开始开发,点击其子菜单获取access_token,如图:

通过上面的 API 的描述,我们总结出以下步骤:

1.实现 https Get 请求

2.获取 access_token 并存储 如果 当前 access_token 过期则更新

2.access_token的获取、存储及更新 代码实现

整理好思路后我们就按照上一节的步骤去实现。通过帮助文档我们将用于请求微信API 的请求地址与参数,存放到 config.json 文件。

其中 appid 与 secret 两个参数 位于 微信公众平台 左侧菜单的基本配置中,如图:

开发者密码 点击重置,用手机微信扫面二维码后便可得到。config.json 代码如下

由于微信 API 请求连接的域名是公用的,我们将它提出来,在请求地址中使用 %s(字符串) 占位符占位。

微信所有请求连接都是 https 协议,很幸运的是 Node.js 系统包中为我们提供了 https 的包,由于后面的请求会多次用到 https ,因此我们将它封装为一个公用的方法,以便以后的使用,再次打开 wechat.js 在构造方法中,引入 https 模块,并在构造函数内部添加 requestGet 方法

提示:

npm 提供了很多用于请求的工具包,比如 request ( 安装命令 npm install request ) 等。这里我只是用系统包去做请求处理。

由于 https 是异步请求的,我在这里面使用了 ES6 的 Promise 对象 。

完成了 requestGet方法后,我们的第1步骤也就完成了。下面开始第2步,获取 access_token 并存储 如果 当前 access_token 过期则更新。

在这之前我是想将 access_token 的存储位置依然放在 config.json 文件中,由于 access_token 在更新后 需要将文件重写,可能容易造成 config.json 文件的格式的紊乱,因此在 wechat 中重新创建一个 accessToken.json 文件用于存储 access_token

其中 access_token 用于存储 我们 GET 请求后access_token 的值,expires_time 用于存储 access_token 的过期时间,保存为时间戳。

在 wechat.js 引入 fs 模块用于操作文件、util 工具模块用于处理占位符、 accessToken.json 文件

在 wechat.js 添加获取 access_token 的方法 getAccessToken

在 app.js 中添加新的监听链接用于测试 我们获取的token

这样我们就大功告成了!

标签: 详解金球奖之争

本文链接地址:https://www.jiuchutong.com/biancheng/382112.html 转载请保留说明!

上一篇:深入浅析Nodejs的Http模块(nodejs cgi)

下一篇:NodeJs中express框架的send()方法简介(node.jsexpress)

  • 利润表的所得税费用怎么填
  • 建筑业企业生产经营情况表
  • 免交城建税的会计分录
  • 小规模纳税人怎样报税
  • 在建工程有增值税发票吗
  • 公允价值确定方法最新
  • 购买商标权税率多少
  • 增值税专用发票几个点
  • 专家评审费如何报销费用
  • 所得税清算时坏账怎么算
  • 营改增后固定资产进项税抵扣规定
  • 6%税率的项目(不含金融商品转让)免税么
  • 如何理解“占应纳税额10%以上”?
  • 作废代开发票,是否退还已纳税款?
  • 盘盈现金计入当期损益
  • 客户扣了一部分不合格产品的货款,请问如何做账呢?
  • 无偿赠送的原材料怎么处理
  • 收到供应商发票分录应怎么写?
  • centos 6.5安装教程
  • 保证合同的担保范围包括
  • 京东预付卡怎么做账
  • win10怎么关掉
  • php类和对象写法
  • 决算报表是财务报表吗
  • 存货报废会计分录例题
  • 核定征收怎么申报个人经营所得
  • 银行承兑汇票背书人和被背书人什么关系
  • php 用户注册
  • 计提企业税费和缴纳分录怎么做
  • 未摊销完的房租转哪个科目
  • 微信公众号模板软件
  • 云E办接口文档
  • which 查找文件
  • 帝国cms怎么上传图片
  • ps闪退是什么原因win11
  • 公司注册资金多好还是少好
  • 个人所得税转账扣除子女教育那个什么时候可以提交
  • 研发增值税税率怎么算
  • 维修费用的处理规定
  • 个人独资企业增值税免征额
  • 增值税留抵税额是什么意思
  • 先收款后给发票合法吗
  • 装载机如何计提折旧费用
  • 专项应付款支出的账务处理
  • 同一控制下的企业合并和非同一控制下的企业合并的区别
  • 房地产开发企业资质管理规定
  • 企业购买黄金有限制吗
  • 没有对公业务的银行
  • 实际成本大于预计总成本
  • 冲销应付账款暂估应付账款的分录怎么做
  • 三种实现方法实现的特点
  • navicat连接mysql时出现1045错误的解决方法
  • 联想Thinkpad怎么进入安全模式
  • bios解除
  • win10系统崩溃怎么修复开不了机
  • Windows Server 2008下共享资源访问走捷径
  • linux系统监控软件
  • 在linux操作系统中,/etc/rc.d/init.d
  • qplus.exe是什么进程
  • xp系统如何获取ip地址
  • linux检测硬盘故障
  • 怎么彻底关闭windows更新
  • 32/64位Win10预览版11102(中英日韩等)多国语言包官方iso镜像下载大全
  • win10启动提示
  • Win10 Build 14316启用Linux Bash 环境图文教程
  • microsoft build
  • linux列操作
  • Unity3D中Javascript的基本使用与介绍详解
  • JavaScript的setter与getter方法
  • xp系统explorer停止工作
  • jquery删除所有class
  • ugy与ngy
  • jQuery版AJAX简易封装代码
  • Protocol Buffers(Protobuf)开发者指南---概览
  • 土地增值税清算条例与实施细则
  • 重庆电子税务局怎么绑定办税人员
  • 税务局基层党建工作汇报
  • 企业报税年报如何填写
  • 大连市国家税务网
  • 个人所得税税务审核不通过怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设