因为在常见的问题中看到说:
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数据的意思吗?
还是另有高招????
求指点迷津!!!!
把code,iv,encryocode传给后台,后台调微信的接口返回数据解密后会获取到openid再返回给前端
你可以尝试在小程序js中将login获取到的jsCode,用wx.request调用微信jsCode2Session接口直接获取sessionkey,就看这个接口有没有在小程序上被限制不能调用。如果可以调用,那么后续有sessionkey后,就可以自己解密了。
刚去看了一下api。
这个url参数必填, 我这游戏没有后台服务器这个参数要填什么啊?
https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject
恕我愚钝,这不是给服务器调用的API吗?我看一天文档,只能看出:
1·客户端调用login函数将code发送给服务器。
2·服务器利用从客户端得到的code通过api获取到openid和session_key这两个字段。
3·利用openid和session_key这两个字段来对encryptedData和iv进行解密得到最终数据
求解
你就用wx.request去调用这个api试试。你现在问题的关键点是怎么获取sessionkey,文档推荐是在服务端调用api获取,你在小程序中直接调用这个api看行不行,wx.reqeust说到底不还是一个api调用么。