博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单学习node微信开发
阅读量:7079 次
发布时间:2019-06-28

本文共 2062 字,大约阅读时间需要 6 分钟。

微信开发环境配置

本篇文章需要配合项目食用,否则我会看的云里雾里的。

微信接入

(1)填写服务器配置

  • URL:URL是开发者用来接收微信消息和事件的接口URL

  • Token:开发者任意填写,用作生成签名【具体看验证有效性段落】

const config = {    wechat: {        appID: 'XXXXXX', // 自己的appID        appSecret: 'XXXXXXXXXX', //自己的appSecret        token: 'imoocwechatweidadepig',        /*        getAccessToken: function () {            return util.readFileAsync(wechat_file)        },        saveAccessToken: function (data) {            data = JSON.stringify(data)            return util.writeFileAsync(wechat_file, data)        }        */    }}let app = new Koa()// opts==config.wechatapp.use(we(config.wechat))}

(2)验证服务器地址的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的URL地址上,发送过去的GET请求包括signaturetimestampnonceechostr

通过将tokentimestampnonce进行字典序排序然后拼接成字符串进行sha1加密,开发者获得加密后的字符串后与signature对比,标识该请求来源于微信,如果相等,原样返回echostr参数内容,接入成功。

let token = opts.token,    signature = this.query.signature,    nonce = this.query.nonce,    timestamp = this.query.timestamp,    echostr = this.query.echostr    let str = [token, timestamp, nonce].sort().join('')    let sha = sha1(str)    // 接入成功    if(sha === signature) {         this.body = echostr + '测试使用'    } else {        this.body = 'wrong'    }
  • 依据接口文档实现业务逻辑

access_token凭据

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token,所以access_token是非常重要的。

开发者需要注意:

  • 凭据需要进行妥善保存。

  • access_token的存储至少要保留512个字符空间。

  • access_token的有效期目前为2个小时(7200),需定时刷新。

  • 重复获取将导致上次获取的access_token失效。

使用APPID和AppSecret调用本接口来获取access_token

https请求方式: GET

当发送请求到这个,正常情况下,微信会返回JSON数据:{"access_token":"ACCESS_TOKEN", "expires_in": 7200}。access_token表示获取到的凭证,expires_in表示凭证有效时间。

let appID = this.appIDlet appSecret = this.appSecretlet url = api.accessToken + '&appid=' + appID + '&secret=' + appSecretreturn new Promise(function (resolve, reject) {    request({url: url, json: true},(function (error, response,body) {        let data = response.body        let now = (new Date().getTime())        let expires_in = now + (data.expires_in - 20) * 1000        data.expires_in = expires_in        resolve(data)    }))})

期间出现的问题

(1)程序的逻辑,没有搞通

(2)Promise的使用,resolve()的传递
(3)request模块的错误使用

转载地址:http://rnvml.baihongyu.com/

你可能感兴趣的文章
python 安装surprise库解决 c++tools错误问题
查看>>
java 练习题
查看>>
【题解】【排列组合】【回溯】【Leetcode】Generate Parentheses
查看>>
spring注解第07课 @Valid和@Validated的总结区分
查看>>
使用apache自带的压力测试工具
查看>>
PAT 1090 Highest Price in Supply Chain[较简单]
查看>>
手机web——自适应网页设计
查看>>
away3d 4.1 alpha 教程 换装篇 <3> 人物动态换装DEMO
查看>>
《你必须知道的.NET》--is和as(Ⅰ)
查看>>
VueJs组件prop验证简单理解
查看>>
leetcode703
查看>>
GDAL的安装和配置(编译proj.4)
查看>>
Swagger2使用记录
查看>>
目标主体名称不正确,无法生成 SSPI 上下文
查看>>
使用jquery获取url参数
查看>>
asp.net 获取网站根目录
查看>>
小程序animation动画效果综合应用案例(交流QQ群:604788754)
查看>>
网站头信息的区别所在:
查看>>
web.py实现jsonp
查看>>
20061130: 最近两个礼拜发生的事情;乌班图
查看>>