官方nodejs解密这段代码, 有一定的概率出现throw new Error('Illegal Buffer')
请问是什么原因,查了很久参数传送没问题。求官方给我回复,在线等,因为上线前遇到这个奇怪问题,见到论坛都有类似的问题 都没有解决的。!!!!!!
相关介绍:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
提供相关的真实数据方便官方帮忙查找下原因是什么:
var appId = "wxb52dabb4ae6c5e5f" ; var sessionKey = "Av/kbm77la18Bo+vDfg9Hw=="; var encryptedData = "wtv8PmAjj/ht48phniECl6DlLjar8OuIC9ghKH6yyNmo6FzHQIKc4/Rf3BkvHdWgT62ogUvxjMkmVFUvOpkKpFMYZ5YFk6Nd3MghV8kdrWLuf5XnoqGLkFhI+LVTkhlbeGF3UQZCIn4N0wfnvbjnWTrdiUaqJRyMz7vh0xggRPL3PHcaIb5oyYrV349xsb4gyzeKPpTRC9ED3o4Yf+SPLExfdiTBnaZ1OaYsdqsVirgh60Z7OxTmXVUAsedbSJZ4z4+nJvbkE/63Twb/a8+64ByPhojwMSsqJru5mLFFIZ+LEf250K+sqfbMhvWnmAYdQLy0ZcSKKqXzFZMmZGa56V5IdRQc8jo4gYVzrhuxbynQghQcjpRYDLDdUUWn5alAg8ruQ6D7uM1qygGbluASixUR59w59UP2QGplgDOXCazC90NB/0ZokvrATObKXpixiUgMu+azL9pEUgCoi1mxaMp47mpl5zyGCAuDoG/54cQ=" ; var iv = "7vXKt43CYsQwntPHIImz0Q==" ; |
=================================
var crypto = require( 'crypto' ) function WXBizDataCrypt(appId, sessionKey) { this .appId = appId this .sessionKey = sessionKey } WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) { // base64 decode var sessionKey = new Buffer( this .sessionKey, 'base64' ) encryptedData = new Buffer(encryptedData, 'base64' ) iv = new Buffer(iv, 'base64' ) try { // 解密 var decipher = crypto.createDecipheriv( 'aes-128-cbc' , sessionKey, iv) // 设置自动 padding 为 true,删除填充补位 decipher.setAutoPadding( true ) var decoded = decipher.update(encryptedData, 'binary' , 'utf8' ) decoded += decipher.final( 'utf8' ) decoded = JSON.parse(decoded) } catch (err) { throw new Error( 'Illegal Buffer' ) } if (decoded.watermark.appid !== this .appId) { throw new Error( 'Illegal Buffer' ) } return decoded } module.exports = WXBizDataCrypt |
demo是有问题的,其中var decoded = decipher.update(encryptedData, 'binary', 'utf8')
decipher.update的第二个参数没有binary的写法,变为空字符就OK了。。。。。。。。。。。
这样,var decoded = decipher.update(encryptedData, ' ', 'utf8')
然而并不行
-------
在进入页面时先在onLoad里wx.login code 换到session_key然而存下来,当用户点击获取手机号时,把加密数据连同之前保存的session_key一起传给后端
----
文档写的很清楚了
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
这个最近频繁出现,官方有工程师可以跟进下,看下官网提供的 nodejs 解密源码是否有 bug 吗?
先确保login在getUserDetail之前
我是调用获取用户手机号,没有调用getuserdetail嘛
请问哥们问题解决了吗
换Python写的API了。
确实是的, 需要在onload的时候就获取code并且存起来。之后用户点击授权的时候,使用这个保存的code。这样就不会概率出现这种报错。
问题还是存在的,有解决的办法吗?
是不是需要先wx.login,再获取解密数据给后台解密。 如果先获取数据,再获得code,那这个code拿到的sessionkey就不对应上数据了?
同问
楼主,请问最后是如何解决问题的呢, 这边也是偶尔会出现这个问题, 特别是在第一次请求的时候。
好像真的解决了,感谢!!
你好,这个getUserDetail 和getUserInfo有什么关系
其实我也不太懂,一下好了,一下又出问题了, 不过现在已经没有分享回调了,这个功能无所谓了
我已经解决了,就是用的getUserInfo方法
请问,怎么解决的?
@楼主,请问这个问题是通过什么方案解决的?