业务流程
- 1.前端调用
wx.login官方文档获取code,调用wx.getUserInfo官方文档获取encryptedData和iv,将获取到的参数传给后台 - 2.后台使用
code调用auth.code2Session官方文档接口获取session_key - 3.后台通过
session_key和iv解密encryptedData获取用户信息
报错原因
- 在第3步解密
encryptedData时,后台报错javax.crypto.BadPaddingException: pad block corrupted - 原因是第1步前端调用
wx.login和wx.getUserInfo接口的顺序不对;如果先调用wx.getUserInfo再调用wx.login,可能会刷新小程序登录态。此时服务器使用code换取的session_key不是加密时使用的session_key,导致解密失败