收藏
回答

wx.login 后立刻调用 wx.getUserInfo 偶尔会解密失败,有遇到过的么?

wx.login 后立刻调用 wx.getUserInfo 偶尔会解密失败,有遇到过的么?

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

4 个回答

  •         
            
    2021-09-28

    我也遇到了同样的问题。有时候会每次都出现的。有必要解决。

    我的解决办法是每次都存下session_key。

    在你解密失败的时候。再次尝试用上个wx.login得到的session_key去解密。再覆盖新的session_key

    目前测试没问题了。

    可能是wx.login之后。session_key没有及时失效导致的。【我猜的】

    2021-09-28
    有用 2
    回复
  • Lufy.
    Lufy.
    2021-09-09

    有先后顺序的。wx.login必须在授权前获取到。不能在触发时wx.login接着授权。

    没错微信就是这么【睿智】,要非得说原因,就是怕你滥用wx.login。

    2021-09-09
    有用 1
    回复 9
    • momo
      momo
      2021-09-09
      这个我们知道,是按照这个顺序来的 但是还是有偶尔解密失败
      2021-09-09
      1
      回复
    • 潘家全
      潘家全
      2021-09-09回复momo
      需要先调用wx.login,再获调用wx.getUserInfo,取到加密数据后需要再次调用wx.checkSession检查登录态是否过期,过期的话再次调用wx.login拿到最新的code。
      2021-09-09
      回复
    • momo
      momo
      2021-09-09回复潘家全
      这个我们也做了 但是还是会出现~
      2021-09-09
      回复
    • Lufy.
      Lufy.
      2021-09-10回复momo
      我说的意思是不能立即调用第二个方法。我复现过你的问题,wx.login后必须要发起主动的用户操作行为,比如点击事件,才能避免解密失败。出现这样的原因是,wx.login完成后获取的密钥,在同时用户授权时会有一定几率重新生成新的密钥,这样新钥匙解不了旧锁,就会失败。这是微信的问题,跟这两个事件异步执行间隙有关。
      2021-09-10
      1
      回复
    • momo
      momo
      发表于小程序端
      2021-09-10回复Lufy.

      我这边在一进入页面时 就checkSession查询登陆状态 如果过期了 就重新登录 获取新sessionkey存起来 这是点击登入时 调用getUserProfile 获取信息 发到服务端去校验 但偶然性校验失败

      2021-09-10
      回复
    查看更多(4)
  • momo
    momo
    2021-10-14

    这个问题解决但是没找到具体问题,我们利用云开发做了登入接口 就没有再次出现这个问题。

    2021-10-14
    有用
    回复
  • 陈宇明
    陈宇明
    2021-09-10

    没有遇到过

    2021-09-10
    有用
    回复
登录 后发表内容