问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 微信小程序 Bug 工具 wx374aa024a19a8946 2.2.5
代码片段
exports.main = async (event, context) => {
return new Promise((resolve, reject) => {
let code = event.code;
let iv = event.iv;
let encryptedData = event.encryptedData;
console.log(typeof(encryptedData),'encryptedData')
axios.get('https://api.weixin.qq.com/sns/jscode2session?appid=wx374aa024a19a8946&secret=2ad8f6e664e66dbecd9fe3116911f633&js_code=' + code + '&grant_type=authorization_code')
.then(res => {
let session_key = res.session_key;
let openid = res.openid
let pc = new WXBizDataCrypt('wx374aa024a19a8946', session_key)
let data = pc.decryptData(encryptedData, iv)//就是这句报错
resolve(data)
})
.catch(err => {
console.log(err, 'err')
reject(err)
})
})
}
- 当前 Bug 的表现(可附上截图)
执行到这里的时候总是报错,提示参数必须时字符串,数组,Buffer,因为这个加密数据本身就是一个字符串,解密用到的构造函数也是官方提供的,不知道为啥还会报错
- 预期表现
希望知道这里为啥会报错或者有其他的解密方法告知也可以
- 复现路径
- 提供一个最简复现 Demo
微信小程序开发问题解答
微信小程序开发者回答:
我也是一样的情况,刚解决,
我用的request模块获取的session_key,返回的结果需要做JSON.parse,否则是字符串形式,let session_key = res.session_key;会导致session_key为undefine,所以报错,建议你检查返回结果的类型,及session_key取值是否正确
微信小程序开发者回答:
有完整的例子吗, 现在需要获取用户信息,手机号等通过云函数加解密
微信小程序开发者回答:
在let session_key = res.session_key;前加个 res=JSON.parse(res) 试试,还有你的secert暴露在代码里了,不知道是不是真的secert
本文网址:http://www.91bianli.com/weixinxiaochengxu/47026.html