收藏
回答

小程序授权登录、判断登录的问题?

自从用了新版授权api后,一直有个问题困扰我

我的用法是:小程序端获得code 去后台拿到openid,查库,如果openid已经存在直接登录,并把userInfo存入globalData,如果库中没有openid,则注册,然后返回userInfo存入globalData。

在判断是否登录过的时候,直接检查globalData中是否有userInfo,如果有的话就表示登录,没有就跳转登录页面。

但是问题来了, 在page.js中检查globalData会出现异步的问题,经常拿不到userInfo,于是在page.js 我用callback去拿userInfo,但是还是有问题,callback也是异步,导致我的判断已经完成了 callback才返回数据。于是我的解决办法是 setTimeOut,估算着1000ms后再做判断,但是这样感觉体验不佳,并且如果网络延迟的话 还是导致callback的数据超时才返回。

请问下这种问题现在主流的解决方案是什么,请详细一点,十分感谢。



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

2 个回答

  • Api调用师
    Api调用师
    2022-03-11

    还是异步问题,看下这个库https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013

    2022-03-11
    有用 1
    回复
  • 困难
    困难
    2021-10-11

    如果是异步请求,要等待数据返回,可以用async await让它同步化

    2021-10-11
    有用
    回复 4
    • 37℃
      37℃
      2021-10-11
      onShow函数用吗  请问下具体怎么写  我写了  报错
      2021-10-11
      回复
    • 困难
      困难
      2021-10-11回复37℃
      你咋写的?本质上讲就是用promise封装一下,用起来更方便。形式上大致就是下面这样,当然不一定要在onload使用。
      2021-10-11
      回复
    • 37℃
      37℃
      2021-10-11
      谢谢  这个我知道  但是这个问题 还不能完全理解为是异步,有2种情况:第一种 就是在wx.login还没有执行完的时候,page.js中callback请求,wx.login中能响应回调;第二种情况就是,wx.login已经执行完成,此时page.js中再用回调,wx.login是无法响应的,所以如果用await  不一定能拿到结果
      2021-10-11
      回复
    • 37℃
      37℃
      2021-10-11
      我现在的想法是   在项目启动的时候做一个缓冲页面,就是加载页,等待wx.login执行完成以后  才从加载页跳到主页,这样就避免了回调的问题,不知道这样可行
      2021-10-11
      回复
登录 后发表内容