button的getUserInfo引起的bug
发布于 5 年前 作者 ming36 8147 次浏览 来自 问答

使用新的button上getUserInfo的方案后,点击按钮触发授权,先拒绝授权,同时wx.login一次,过三分钟,再触发一次按钮,允许授权,wx.login同时把用户加密信息一起传到后端,后端用code拿到sessionKey去解密,此时会100%解密失败

    通过分析,此问题与getUserInfo生成的与wx.login的顺序有关。

    但,通过按钮的方式,getUserInfo获取加密数据必然是要先于wx.login的

4 回复

注意wx.login 会刷新session_key。在userinfo button回调内调用wx.login,开发者获取到session_key是刷新后的session_key,而userinfo是以刷新前session_key做加密的。所以会解密失败。

建议开发者在获取userinfo等加密数据前,调用wx.login 并对session_key做好维护。

另外提醒:在用户确认授权后,开发者可以通过 wx.getUserInfo 获取最新的数据。

我现在的做法是,在 onShow 中维护 session 状态,每次都会用 wx.checkSession 判断,如果过期,就调用 wx.login。

您好,如果我同时需要获取手机号和头像那我这边wx.log要怎么做, 因为换回来的code值没有办法重复使用,不能换出两个session_key, 是不是每次获取的时候都需要wx.log一次…

从wx.getUserInfo的文档看的话,加密数据的解密是和wx.login有关联的,

之前看有地方描述说目前这种关联已经去掉了,但从我们的测试来看,这种关联还是存在的,并且会引起解密失败。

请问官方去强制废掉wx.getUserInfo的时候考虑过这个东西吗?

回到顶部