微信开发——加密认证

微信开发的第一步就是要打通本地开发环境与微信服务器之间通道,所以我们在将内网(本地)端口映射到外网后,还要有一种特定的暗号来与微信服务器对接,就是加密认证。

在接口配置信息中填入自己的外网代理地址和自定token后,点击确认提交按钮,实际上微信服务器会向我们发送一个认证请求,其中包含:signature,nonce,timestamp,echostr

{
    signature: 'xxxxxxxxxxxxxxxxx',
    nonce: 'xxxxxxxxxxxxxxxxxx',
    timestamp: 'xxxxxxxxxxxxxxxxxxxxxx',
    echostr: 'xxxxxxxxxxxxxxxxxxx'
}

而要求我们返回的响应消息是echostr,微信接收到匹配的响应消息就表示接头成功。

但是处于安全考虑,我们本地(内网)地址是暴露到外网的,谁都能进来溜溜,所以我们也需要判断这个请求是否属于微信服务器,判断逻辑如下:

1 将token、timestamp(时间戳)nonce(随机数)三个参数进行字典排序
2 将三个参数数字字符串拼接成一个字符串进行sha1加密
3 将加密后的字符串与signature对比,如果相同,表示这个请求来源于微信

代码如下:

var str = [token,timestamp,nonce].sort().join('');
var sha = Sha1(str);

if (sha === signature) {
  this.body = echostr
}else {
  this.body = 'wrong'
}

微信加密认证的过程其实非常简单,但我们要注意代码不能敲错,出现配置错误第一步是查看控制台,请求有没有发过来,然后检查代码拼写

通常会把加密认证做成中间件来简化代码逻辑,这里不做阐述。

发布了14 篇原创文章 · 获赞 0 · 访问量 8381
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览