【Node.js 微信公众号实战】2.Node.js access_token的获取、存储及更新

文章目录:
        1.Node.js 接入微信公众平台开发
        2.Node.js access_token的获取、存储及更新
        3.Node.js 自定义微信菜单
        4.Node.js 微信消息管理

一、写在前面的话

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

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

二、整理项目结构

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

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

'use strict' //设置为严格模式

//构建 WeChat 对象 即 js中 函数就是对象
var WeChat = function(config){
   
    //设置 WeChat 对象属性 config
    this.config = config;

    //设置 WeChat 对象属性 token
    this.token = config.token;
}

//暴露可供外部访问的接口
module.exports = WeChat;

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

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

/**
 * exports  module.exports 的一个简短的引用
 * require  用于引入模块
 * module   当前模块的引用
 * __filename  当前模块的文件名
 * __dirname   当前模块的目录名
 */
(function (exports, require, module, __filename, __dirname) {
   
    //自定义模块的代码块
})();

相信对于有过 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。

  具体详解可以点击查看该文章 -> Module.exports和exports的区别

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

'use strict' //设置为严格模式

const crypto = require('crypto
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当微信公众号客户端向 Node.js 开发的服务器发送 POST 请求时,服务器可以使用 Node.js 内置的 HTTP 模块来处理这些请求。下面是一个处理微信公众号客户端 POST 请求的基本示例: ```javascript const http = require('http'); const querystring = require('querystring'); const server = http.createServer((req, res) => { if (req.method === 'POST' && req.url === '/wechat') { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { const postData = querystring.parse(body); console.log(postData); res.end('OK'); }); } else { res.end('Hello World!'); } }); server.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 这段代码创建了一个 HTTP 服务器,监听在 3000 端口上。当收到来自微信公众号客户端的 POST 请求时,会解析请求体中的数据,并打印到控制台上,最后返回一个字符串 "OK"。当收到其他请求时,返回 "Hello World!"。 需要注意的是,微信公众号开发涉及到很多安全和验证的问题,开发者需要仔细阅读微信公众平台的开发文档,了解如何进行接口调用和消息交互。 ### 回答2: 在使用Node.js开发微信公众号时,服务端可以使用第三方库如Express来处理HTTP请求。当客户端发送一个POST请求时,服务端可以通过Express中间件来解析请求内容,并触发相应的处理函数。 具体而言,服务端在接收到客户端的POST请求后,首先会解析请求的内容,包括请求头、请求体等等。在微信公众号开发中,通常会解析微信服务器发送过来的XML格式的请求体,其中包含了用户发送的消息或事件等信息。 服务端可以使用Express中的`body-parser`中间件来解析请求体,并将解析后的JSON对象传递给后续的处理函数。通过定义相应的路由和处理函数,服务端可以根据不同的请求内容来响应对应的操作。 例如,当客户端发送一条用户的文本消息时,服务端可以通过定义一个处理函数来响应这个请求,获取消息内容并进行相应的处理,比如回复一条特定的文本消息。 另外,服务端还能和微信服务器进行交互,比如校验服务器地址的有效性、获取access_token等操作。服务端可以通过向微信服务器发送GET或POST请求来实现这些功能。微信服务器会根据请求内容进行相应的处理,并发送相应的响应给服务端。 通过这样的方式,服务端可以响应客户端的POST请求,并进行相应的处理和交互,从而实现微信公众号的开发和运行。 ### 回答3: 在Node.js开发微信公众号时,服务端是通过使用框架或库来响应客户端的POST请求的。 首先,服务端会创建一个HTTP服务器,并监听指定的端口。当客户端发送POST请求时,服务端会接收到请求。 在接收到POST请求后,服务端会进行解析,获取请求中的参数和数据。这可以通过使用Node.js内置的http模块或者一些第三方库来实现。 接下来,服务端会根据请求的具体内容进行相应的处理。在微信公众号开发中,常见的是处理用户的消息或事件。服务端会根据接收到的POST请求中的数据,比如用户发送的消息类型、内容等,来进行相应的处理,比如根据关键词回复消息或者执行相应的操作。 处理完请求后,服务端会生成相应的响应数据,并将其返回给客户端。这可以通过设置HTTP响应头部和正文来实现。在微信公众号开发中,通常会将响应数据封装成XML格式,再返回给客户端。 最后,服务端会将封装好的响应数据发送给客户端。客户端收到响应后,会根据接收到的数据进行相应的处理,比如显示在用户的微信界面上。 总之,Node.js开发微信公众号时,服务端是通过创建HTTP服务器来响应客户端的POST请求的。服务端会接收、解析、处理请求,并返回相应的数据给客户端。通过这种方式,实现了服务端与客户端之间的交互和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值