收藏
回答

获取用户信息逻辑错误

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug wx.login 客户端 iOS 6.70 2.0.8

现在遇到的情况是:

不同主体要获取UnionId

但是一定要用户授权,然后一定得用 button 的 open-type="getUserInfo" ,成功后通过 bindgetuserinfo="onGotUserInfo" 获得登录加密数据,但是这个加密数据是需要code去解的,但是wx.login不能写在 onGotUserInfo 里面啊,至此,逻辑是不是错了。


现在的逻辑是:

wx.login -> button  -> code和加密数据 -> 解密


正确的逻辑应该是这样吧?

button -> wx.login -> code和加密数据 -> 解密


当前的解决方案该怎么办?  用户点登录按钮前事先给他生成好 code 吗?

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

1 个回答

  • 晨
    2018-06-27

    session未过期情况下login会刷新登录态,导致sessionKey发生变化。

    稳妥的方案是在用户点击授权后,先checkSession,如果未过期,不login,服务器可以用之前的sessionKey解密。如果session过期,需要重新login,使用新的sessionKey解密,这时login code换取的sessionKey和加密userInfo的是同一个


    2018-06-27
    赞同
    回复 2
    • 行渐远
      行渐远
      2018-06-27

      你这个方案是针对旧用户而言吧?

      创建新用户之前怎么会有sessionkey呢?这个用户是第一次进的小程序啊~

      2018-06-27
      回复
    • 晨
      2018-06-27

      新用户等同于session过期,重新login获取sessionKey就好

      2018-06-27
      回复