button的getUserInfo引起的bug

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

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

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

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

最后一次编辑于  05-15  (未经腾讯允许,不得转载)
收藏 0评论 3
关注问题写回答

3 个回答

  • Band🕹Band🕹

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


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


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

    赞同 2没有帮助
    评论 1
    复制
    置顶回答05-15
    • 土豆豆土豆豆
      所以说,现在按钮完全成了单独一个授权的作用了,我们现在只能是按钮授权结束再login一次,再wx.getUserInfo一次再让后端去解密,这种做法感觉有点多此一举又不得不做的感觉
      赞同 4没有帮助
      回复
      复制
      05-16
    评论
  • 何默何默

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

    赞同 2没有帮助
    评论 0
    复制
    05-16
  • 土豆豆土豆豆

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



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


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

    赞同 0没有帮助
    评论 0
    复制
    05-15