微信小程序加密数据解密错误非法_缓冲原因

这种情况偶尔会发生,通常是在一段时间后第一次登录时。

问题的原因是getUserInfo放在wx.login之前GetUserInfo获取iv和encryptedData并将它们传递到后台。当调用wx.login时,可能会更新用户的session_key,使旧的session_key失效。这样,当后台再次解密时,相当于用新的session_key解密旧的session_key加密数据,会报错一个非法的_BUFFER错误。

正常流程应该是:

很容易误认为是wx.getUserInfo回调,然后调整wx.login取代码发送给服务器,这样getUserInfo中用于数据加密的session_key可能和用于解密的session_key不一致,因为wx.login可能会刷新session_key。

建议开发者登录;提前;或者使用checkSession在回调中先检查登录状态,避免登录刷新登录状态。