收藏
回答

wx.getShareInfo()返回的encryptedData怎么解密

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小游戏 需求 wx.getShareInfo(Object object) 微信iOS客户端 6.6.7 7.0

因为在常见的问题中看到说:

Q:wx.getUserInfo获取到encryptedData不能在小程序直接解密?

A:只能在服务端解密。

还有:

Q:encryptedData的意义?

A:1、unionid只有在某些情况下才可以在login阶段和openid一起获取

    2、为了安全性。因为前端甚至整个微信都有可能被坏人劫持,坏人可能会传回来一个假的userInfo,但是encryptedData坏人是没办法造假的,因为用于加密和解密的sessionKey只在微信后端和开发者后端传递。所以encryptedData可以用于防止这种情况出现

这两种情况。

是不是就意味着像没有后端的小游戏就没有办法解密通过wx.getShareInfo这个api获取到的encryptedData数据?

因为我的游戏是只有前端的,文档上面说需要session_key等一些数据才能进行解密, 而session_key这个字段又说只能在微信后端和开发者后端传递,这就是说我只有前端的游戏是没有办法解密wx.getShareInfo这个api获取到的encryptedData数据的意思吗?

还是另有高招????

求指点迷津!!!!

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

2 个回答

  • 洋葱
    洋葱
    2018-08-09

    把code,iv,encryocode传给后台,后台调微信的接口返回数据解密后会获取到openid再返回给前端

    2018-08-09
    有用
    回复
  • 潘峰
    潘峰
    2018-08-07

    你可以尝试在小程序js中将login获取到的jsCode,用wx.request调用微信jsCode2Session接口直接获取sessionkey,就看这个接口有没有在小程序上被限制不能调用。如果可以调用,那么后续有sessionkey后,就可以自己解密了。

    2018-08-07
    有用
    回复 5
    • ChenXW
      ChenXW
      2018-08-07

      刚去看了一下api。

      这个url参数必填, 我这游戏没有后台服务器这个参数要填什么啊?

      2018-08-07
      回复
    • 潘峰
      潘峰
      2018-08-07

      https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject


      2018-08-07
      回复
    • ChenXW
      ChenXW
      2018-08-07回复潘峰

      恕我愚钝,这不是给服务器调用的API吗?我看一天文档,只能看出:

      1·客户端调用login函数将code发送给服务器。

      2·服务器利用从客户端得到的code通过api获取到openid和session_key这两个字段。

      3·利用openid和session_key这两个字段来对encryptedData和iv进行解密得到最终数据

      求解

      2018-08-07
      回复
    • 潘峰
      潘峰
      2018-08-07

      你就用wx.request去调用这个api试试。你现在问题的关键点是怎么获取sessionkey,文档推荐是在服务端调用api获取,你在小程序中直接调用这个api看行不行,wx.reqeust说到底不还是一个api调用么。

      2018-08-07
      回复
    • 齐小坑
      齐小坑
      2018-08-08回复潘峰


      2018-08-08
      1
      回复
登录 后发表内容