小程序-通过Cipher类解密RowData获取unionId

坑1 - 深坑:

背景:微信小程序,通过Cipher类解密RowData获取unionId。通过手动测试,单测获取获取,但是联机获取报错 “javax.crypto.BadPaddingException: pad block corrupted”。

原因:
wx.getUserInfo() 需要在 wx.login() 执行之后调用,否则会引发session_key与加密数据不一致的问题。
// 修正后的代码段
var config = require("../../utils/config.js")
    config = config.config
    var comFun = require("../../utils/comFun.js")
    comFun = comFun.comFun

    var app = getApp();

    Page({
      data: {},
      onGetUserinfo: function (e) {
        console.log(e);
        var errMsg = e.detail.errMsg;
        var userInfo = e.detail
        // 如果用户拒绝授权
        if (errMsg == "getUserInfo:fail auth deny") {
          // 弹出对话框
          comFun.popWarnMessage(
            '授权拒绝,请进入登录页面,重新执行登录操作',
            function (res) {
              console.log(res);
              if (res.confirm) {
                console.log('用户点击主操作')
              } else {
                console.log('异常,用户点击辅助操作')
              }
            }
          );
        } else {
          // 用户授权通过
          wx.login({
            success: function (res) {
              console.log(res);
              // 登录成功
              if (res.errMsg == "login:ok") {
                wx.getUserInfo({
                  success: function(resUserInfo) {
                    console.log(resUserInfo)
                    var userInfo = resUserInfo
                    var params = {
                      code: res.code, // 登录code
                      encryptedData: userInfo.encryptedData, // 用户信息的加密数据
                      iv: userInfo.iv
                    }
                    var option = {
                      transid: "A16280301", // 获取用户隐私信息
                      data: params,
                      succ: function (data) {
                        console.log(data);
                      },
                      fail: function (data) {

                      }
                    }
                    // 外呼获取加密数据openid 和 sessionkey 及其相关的 trdSessionKey
                    comFun.utils.request(option)
                  },
                  fail: function(res) {

                  }
                })

              } else {
                // 异常处理
                comFun.popErrorMessage(
                  "出现异常:用户授权通过,但wx.login失败"
                )
              }
            }
          })
        }

      }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值