L06-获取用户发送的消息

1、精简auth.js

  • 将以上代码转化为:

2、将signature比对放到GET请求下

3、POST请求下验证消息是否来自服务器

4、测试

  • 重启服务器
  • 打开接口测试号,发送一条消息,观察控制台是否打印消息

  • openid是用户微信的id,每个用户都不一样
  • 如果开发者服务器没有返回响应为微信服务器,微信服务器会发送三次请求过来,可以先用res.end(‘’);返回(后续再删掉)

5、接受请求体中的数据(流式数据)

  • 编写一个getUserDataAsync()方法

  • 使用async函数来接收这个流式数据

6、测试接收结果

  • 重启服务器
  • 在测试号发送一条消息,观察控制台

  • <ToUserName>:开发者id
  • <FromUserName>:用户openid
  • <CreateTime>:发送的时间戳
  • <MsgType>:发送的消息类型
  • <Content>:发送的内容
  • <MsgId>:消息id 微信服务器会默认保存3天用户发送的数据,通过此id3天内就能找到消息数据

7、为了拿到数据,我们需要将xml数据解析成js对象

  • 定义一个parseXMLAsync(xmlData)方法,在tool.js中编写

  • 需要用到一个库(xml2js),终端输入nom i xml2js进行下载安装

8、测试解析结果

  • 重启服务器,测试号发送一条消息,观察控制台打印的结果

9、怎么提取我们想要的信息?

  • 解析出来的结果,很多都不是我们想要的,为了今后能够更方便的使用这些数据,我们对其进行格式化,使其成为(名称:内容)的格式进行输出

  • 在tool.js中定义一个新方法:formatMessage(jsData),来获取有用的数据

  • 注意:将value里的第一个值赋值给message

10、测试输出结果

  • 同步方法,不需要添加await关键字了