小程序之获取解密数据

本文主要探讨了在小程序中遇到的解密数据时成功与失败的问题,指出问题的关键在于key的有效时限。作者建议在小程序全局函数执行后立即获取key以确保解密的成功。此外,还提到了获取手机号码的问题,强调用户信息和手机号码不能在同一请求中同时获取,但解密过程是相同的。
摘要由CSDN通过智能技术生成

上篇文章有提到过,这次完善下,上张的链接

https://blog.csdn.net/yanpengfeil/article/details/85982935

先说一下之前一直碰到的问题,解密数据时 时而成功、时而失败。。。。

1.原因时key是有时限的,之前的思路是在使用之前马上获取,显然这个思路的方向是错误的。

正确的解决方式,小程序全局函数执行以后就把key获取回来,问题完美解决


其实肯定可以比我写这个简单的,这段代码是因为改来改去最后成这样了,自行优化吧

获取key:
getKey() {
    let key = "";
    wx.login({
      success: function (res) {
        if (res.code) {
          wx.request({
            method: "POST",
            header: {
              'content-type': 'application/x-www-form-urlencoded' // 默认值
            },
            url: getApp().data.serverUrl + '/view',
            data: {
              json: "{\"code\":\"" + res.code + "\"}",
              "method": "login"
            }, success: function (result) {
              if (result.statusCode == 200) {
                let key = result.data.session_key;
                if (key != "") {
                  wx.setStorageSync('sessionKey', key);
                } else {
                  wx.setStorageSync('sessionKey', "");
                }
              } else {
                wx.setStorageSync('sessionKey', "");
              }
            }, fail: function () {
              wx.setStorageSync('sessionKey', "");
            }
          })
        }
      }
    })
  }

解密
decrypt: function (encryptedData, iv, key) {
    let that = this;
    let result = "";
    //解密
    wx.request({
      method: "POST",
      header: {
        'content-type': 'application/x-www-form-urlencoded' // 默认值
      },
      url: getApp().data.serverUrl + '/view',
      data: {
        "json": "{\"encryptedData\":\"" + encryptedData + "\",\"iv\":\"" + iv + "\",\"session_key\":\"" + key + "\"}",
        "method": "getDecrypt"
      }, success: function (res) {
        //解密成功
        result = res.data;
        if (res.statusCode == '200') {
          if (result.length < 1000) {
            wx.setStorageSync('encryptedData', result);
          } else {
            wx.setStorageSync('encryptedData', "");
          }
        } else {
          wx.setStorageSync('encryptedData', "")
        }
      }, fail: function () {
        wx.setStorageSync('encryptedData', "");
      }
    })
  }

问题2:获取手机号码的问题

用户信息、手机号码2选1,不能在一次请求中同时获取,解密都是一样的代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanpengfeil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值