业务流程
- 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
,导致解密失败