Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WxMaUserServiceImpl#checkUserInfo 解密失败 #1291

Closed
adeng-wc opened this issue Nov 21, 2019 · 8 comments
Closed

WxMaUserServiceImpl#checkUserInfo 解密失败 #1291

adeng-wc opened this issue Nov 21, 2019 · 8 comments

Comments

@adeng-wc
Copy link

简要描述

前端通过wx.login获取code,然后再调用getUserInfo获取加密的用户信息。一次性把参数传入服务端。
服务端先用code置换sessionKey,然后用sessionKey解密用户信息。一直解密失败。

public boolean checkUserInfo(String sessionKey, String rawData, String signature) {
final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey);
return generatedSignature.equals(signature);
}
返回 false

官网有说,先调用login会刷新登陆状态,所以,要先 getUserInfo 需要在login之后。目前的流程已经是在 login之后,但是还是会偶有出现解密用户信息失败的情况 。

模块版本情况

  • WxJava 模块名: weixin-java-miniapp
  • WxJava 版本号: 3.5
@binarywang
Copy link
Member

请先阅读下置顶区的问题:#359
看是否有帮助

@adeng-wc
Copy link
Author

执行 final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey); 的时候并没有出错。
应该是 return generatedSignature.equals(signature); 返回false 了。

错误用户的日志信息:
WxController [T:] code2Session WxCode2SessionForm : [WxCode2SessionForm(code=023A37gm0QzzUq1HV7hm0Cm7gm0A37g2, userInfo=WxUserInfoForm(encryptedData=8SA+aKOyQ6Qm1Ap5L9odpn2N7TDWwpq/aEwcKVET9sM2ghkZ0An0rbebLejq/tC4Tzkh6S6V83lDGv6OXYiHKxFGsCBt1XEZWQbEvFqfy5hX+HGKdovUdC22glYB0Qr+4kCPqtg7O2clJJ4ZzyA/gU7DW2IZNz5I2Oipa7EkcnDNBQj+5qvZq6hkGw7DuUWsh3IHSSSfkk1/VAtILJ6V7r/1g0kfL98Kc5mjclrNRvuQXXe3VZ3IuVuha0l7PFUhVdphgom7s/pnJsDAe2VqUwBzYXUfPbaW+h12WuUoFnrY9rMlwYpXzg44Qtg3pM1Etsb9rO8VNFIV2UqJeu1ATk/kgh/tovbgf0vyeFYlzF9Y2dG96VmDOlFRJuUSf+A09ZzDguWCI4XVTvJdUugJ5RNweBtVN6XqJaH1wq15KjiOLcAuPiNgeJ6aqMHusTugnU+Tw064p8atD/bOtprD5OTX9cSfVqNeQnsZR5EhA6oN2u+oNp5mrX2rRBeHgDUqzAb0kfJVuGQllF4pPqjEgr6Flhn1oy7S4xlRqc/xkEk=, rawData={"nickName":"������������������","gender":1,"language":"zh_CN","city":"昆明","province":"云南","country":"中国","avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/7EgLTcst5MtrlKjQpPAJXxdT3k2U3O60Ego4EyibZZ64MfT7Bz9fnRbteefLL0Zs9XFATwGNXjSQicKSXZmMibwqA/132"}, signature=2be14d548c25e095edecbf0bc88a13c9154de2fa, iv=0CGtjwftDshn3mvzald7eg==), registeredChannel=4, invitePeopleUserID=XQCQ000049661)], code:4

现在怀疑,是不是 nickName 包含特殊字符,导致传输 做了什么处理,导致服务器加密比较失败。

@binarywang
Copy link
Member

#876 看起来跟这个问题是类似的?

@adeng-wc
Copy link
Author

看情况有些类似。暂时还没有复现,所以不能确定。

@adeng-wc
Copy link
Author

问题复现场景
用户昵称:🌾🍸🌾
手机机型:
image
输入法:手机自带输入法

在其他手机上使用这个昵称,是可以解析的。ViVO 手机上,使用 这个昵称就出现上面的问题。

@binarywang
Copy link
Member

这个问题很有趣,最近没人反应有此问题了吧?暂时关闭

@9monsters
Copy link

依旧出现这个问题。。。

@binarywang
Copy link
Member

依旧出现这个问题。。。

请描述清楚你的问题,单独开个issue,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants