// 解密用户手机号
WxMaPhoneNumberInfo phoneNoInfo = new WxMaPhoneNumberInfo();
if (StringUtils.isNotBlank(login2.getEncryptedData1()) && StringUtils.isNotBlank(login2.getIv1())){
phoneNoInfo = wxService.getUserService().getPhoneNoInfo(sessionKey, login2.getEncryptedData1(), login2.getIv1());
}
为什么我在Java后端使用手机号的加密信息进行解析时会报解析错误?这时sessionkey并没有过期。
需要研究下sessionkey机制,看在你们的项目中会不会存在这样一种情况:有多个地方使用到了wx.login(这个方法有它自己的机制会刷新sessionkey),那么就存在在授权的时候用的是sessionKeyA生成的加密串,在解密使因为其他地方调用了wx.login 变成了sessionKeyB。这是就会出现机密失败的情况。