收藏
回答

button的getUserInfo引起的bug

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug getUserInfo 微信iOS客户端 iOS 6.6.6 1.9.90

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

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

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

回答关注问题邀请回答
收藏

4 个回答

  • Band
    Band
    置顶回答2018-05-15

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


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


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

    2018-05-15
    有用 3
    回复 1
    • 2018-05-16
      所以说,现在按钮完全成了单独一个授权的作用了,我们现在只能是按钮授权结束再login一次,再wx.getUserInfo一次再让后端去解密,这种做法感觉有点多此一举又不得不做的感觉
      2018-05-16
      5
      回复
  • 邓亮
    邓亮
    2018-05-16

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

    2018-05-16
    有用 2
    回复
  • blackcater
    blackcater
    2019-07-19

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

    2019-07-19
    有用
    回复
  • 2018-05-15

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



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


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

    2018-05-15
    有用
    回复
登录 后发表内容