收藏
回答

[已解决]小游戏openGid解密失败

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小游戏 Bug getShareInfo 客户端 iOS 6.6.7 2.2.2

分享到群后,拿分享的shareTicket调用一下wx.getShareInfo,得到encryptedData和iv,再和登录时换取到的sessionkey一起解密得到openGId。

大多数情况都能正确解密出来。

偶尔会出现解密失败的情况。这中间sessionkey并没有发生变化过(因为没有重新登录)。请问有可能是什么问题呢?

一开始怀疑是小游戏一段时间后sessionkey过期了,于是改为调用wx.getShareInfo前先用wx.checkSession判断有无过期,如果过期则先执行wx.login刷新sessionkey。

但是,当wx.checkSession返回未过期时,用sessionkey解密encryptedData也会失败。



最后一次编辑于  2018-08-15
回答关注问题邀请回答
收藏

2 个回答

  • Welman
    Welman
    2018-08-14

    丞相,最后你找到问题了吗

    2018-08-14
    有用
    回复 5
    • 曹操
      曹操
      2018-08-14

      找到了啊。

      小游戏一段时间后sessionkey过期了,于是改为调用wx.getShareInfo前先用wx.checkSession判断有无过期,如果过期则先执行wx.login刷新sessionkey。

      客户端调用登录流程后服务端也获得了最新的sessionkey,这样解密就不会错了

      2018-08-14
      回复
    • Welman
      Welman
      2018-08-14回复曹操

      我也是怀疑这样,但是我在调用之前,有wx.checkSession判断,显示的未过期,结果还是解密失败了,老尴尬了

      2018-08-14
      回复
    • 曹操
      曹操
      2018-08-14回复Welman

      这要查下服务端代码,看下有没有更新sessionkey

      2018-08-14
      回复
    • 장수연.(七七)
      장수연.(七七)
      2018-11-21回复Welman

      我的登录之前调用的wx.checkSession,显示未过期,也是解密失败,谁能帮我解答一下

      2018-11-21
      1
      回复
    • 2019-01-03回复장수연.(七七)

      我也是你这个情况呀,checkSession未过期,但是解密失败

      2019-01-03
      回复
  • 曹操
    曹操
    2018-08-06

    @林超 @白开水


    2018-08-06
    有用
    回复 9
    • 曹操
      曹操
      2018-08-06

      没人吗

      2018-08-06
      回复
    • 曹操
      曹操
      2018-08-06

      在线等

      2018-08-06
      回复
    • 曹操
      曹操
      2018-08-06

      是因为拿到的sessionkey存在过期机制吧

      2018-08-06
      回复
    • 曹操
      曹操
      2018-08-06


      2018-08-06
      回复
    • 曹操
      曹操
      2018-08-06回复曹操

      这是错误信息

      2018-08-06
      回复
    查看更多(4)
登录 后发表内容