微信开发——加密认证

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

在接口配置信息中填入自己的外网代理地址和自定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'
}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值