首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Error: Illegal BufferError: Illegal Buffer 微信小程序服务器获取用户信息,encryptedData解密失败​

Error: Illegal BufferError: Illegal Buffer 微信小程序服务器获取用户信息,encryptedData解密失败​

作者头像
stys35
发布2020-12-08 10:33:26
2K0
发布2020-12-08 10:33:26
举报

Error: Illegal Buffer 微信小程序服务器获取用户信息,encryptedData解密失败​

导致问题的原因是session_key没有及时更新 在调用wx.login()之前调用了wx.getUserInfo(),在调用getUserInfo()时将获取到 iv 和encryptedData 传给后台,而后调用login(),此时的session_key可能会被新的session_key覆盖,就会导致后台在对数据解密时使用新的session_key去解密旧的encryptedData,如此就会Illegal Buffer报错。

在使用微信官方WXBizDataCrypt.js解密encryptedData获取敏感数据的时候,偶尔会报错。

DeprecationWarning: Buffer() is deprecated due to security and usability issues. 
Please use the Buffer.alloc(),Buffer.allocUnsafe(), or Buffer.from() methods instead.
  • 1
  • 2
message: Illegal Buffer, stack: Error: Illegal Buffer at WXBizDataCrypt.decryptData
  • 1

这种错误一定概率出现,一般出现在项目初始化的时候。 我一开始还以为是Buffer库的问题,使用了safer-buffer替换,还是没有解决。 网上还有人说需要encodeURIComponent对参数包裹,这也不能解决。

其实,最后的解决办法,就是在小程序端通过open-type="getUserInfo"获取参数之前,必须要wx.login。 所以,重要的事情说三遍:

wx.login wx.login wx.login必须先执行。

提出问题:

最近在搞一下小程序授权登录(用户注册功能),在密钥,appId等内容都没问题的情况下,请求授权注册接口等时候一直报错 Illegal Buffer。

问题原因:

在解密encryptedData数据的时候,传过来的数据里面可能会有+等符号, 如下:

 encryptedData: 'BQRDHWz16TcmEOkp1yV0eMd8L0a7orJeA1y8uNZycPHO41MBZmYm1jbMMh36tozePbtnbdxovStZhEbMKW9fYBpUKcXDedcChyowIXuYNic2CSItr4lv9TI47kfmBrhYE39wGE20BMtj8ORVQ2xM5A3X1uL7HHI5IZbnEqQS1W38PzGbJBW8IkybFQHXwtvigWquekDe1DmV1LA8vEFflUIjfuA5cWgGJJstzxi8bjtUMjQC/hcPRb+7pNzpo+jmtE0jU9F/a5V95lK6foYTu1ErWjEezaJ3YwujWK5oq581/b5TIL+vJPUn+vdXj71plfrH7WnSoC0ZS3yF6ToBcH17GAZsyaiGqOl88NVtkuwCA/WGMqpvnAUfromw5kaZj1QFA6U/N/lF43HdOyhjQUAkPsIMJLaHkfso6Aww0IYTcIc+qXOV8Rcrh0h61R34Dqkn11iE4mo1fmUc14ynvd4d6KXB2AvqOl+dHOd+SnRGYwTINAkPuyhxQRA/Yqj2F6MlUdKZxth73w2JEUYkoA==',
 iv: 'GcF/mmbBBQA7kJOSR9I/7w=='
  • 1
  • 2
  • 3

这些符号传递给服务器就会消失,导致微信提供等解密函数一直报错。

解决办法:

前端在传递encryptedData和iv向量等时候需要进行encodeURIComponent编码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Error: Illegal Buffer 微信小程序服务器获取用户信息,encryptedData解密失败​
    • wx.login wx.login wx.login必须先执行。
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档