收藏
回答

关于 getUserInfo 的 button 使用疑惑

问题模块
API和组件

当使用新的 open-type 为 getUserInfo 的 button 时,可以获得 user info,其中包含加密的内容,如果想解密这些内容,必须要调用 wx.login 获得 code,但一旦调用了 wx.login 接口,刚才拿到的 user info 中加密信息和 session key 的对应关系就错位了,就无法解密了。


所以,这 button 到底该怎么用... 怎么用都是各种 bug 啊。

最后一次编辑于  2017-08-16  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • 晨
    2017-08-19

    可以解出来,这是login code换取的sessionKey和加密userInfo的是同一个。

    checkSession检查的是用户与微信之间的session,与开发者服务端无关。

    2017-08-19
    赞同
    回复
  • 晨
    2017-08-19

    你好,session未过期情况下login会刷新登录态,导致sessionKey发生变化。稳妥的方案是在用户点击授权后,先checkSession,如果未过期,不login,服务器可以用之前的sessionKey解密。如果session过期,需要重新login,使用新的sessionKey解密。


    2017-08-19
    赞同
    回复
  • 范怀宇
    范怀宇
    2017-08-19

    👌,但这还是依赖服务端一定要保存上一个 code 换来的 session,否则,拿不到 code,根本解不出来。

    2017-08-19
    赞同
    回复
  • 范怀宇
    范怀宇
    2017-08-19

    如果 session 过期,重新 login,那从 getUserInfo 拿到的数据,是否可以解出来?如果不行,那让用户再点一次?


    另外,我很好奇,check session 的实现机制,他怎么知道我在服务端是否 cache 了 session,以及何时 cache 的?如果我没 cache session,那其实 checkSession 是否成功根本没有意义?

    2017-08-19
    赞同
    回复
  • 范怀宇
    范怀宇
    2017-08-19

    感觉并没有人用这个控件。。。囧

    2017-08-19
    赞同
    回复