评论

微信授权踩坑

微信授权

可能有不少人认为微信小程序授权是刚开始就请求的,其实不然,前几天本人审核没通过,就是说需要用户自行体验一番,之后用户再自己决定登录授权与否;这里容易遇到一个问题假如是一个商城类的小程序,tabbar有首页、推荐、订单、个人四个模块,因为一开始是不在登录状态的,所以获取不到订单信息,如果用户点击订单页之后再通过个人页来进行授权,就会发现订单页因为已经缓存,不会再因为用户之后的授权而更新数据,我这里是用wx.ralaunch(关闭其他所有页面,跳到某个页面)来实现的,这样就会在用户授权之后可以“重新开始”

最后一次编辑于  2020-03-24  
点赞 1
收藏
评论

6 个评论

  • 小肥羊🍊
    小肥羊🍊
    发表于小程序端
    2020-03-31
    这个其实不算坑,不过解决了就好,属于对生命周期的理解
    2020-03-31
    赞同 1
    回复
  • TNT
    TNT
    2020-03-24

    每个tabbar页面接口需要切换页面刷新的放到onShow里

    2020-03-24
    赞同
    回复
  • 郑旭东
    郑旭东
    2020-03-24

    对,因为tabbar页面默认不重新加载。

    2020-03-24
    赞同
    回复
  • 青寒
    青寒
    2020-03-24

    额,获取用户openid不需要用户授权吧,有openid对应订单。再有用户授权后,应该是可以修改页面数据的。

    2020-03-24
    赞同
    回复
  • 陈
    2020-03-24

    在页面加载的时候发起请求的话我也有想过,但如果它是从返回上一级进入的话是不会触发这个函数的,所以我还是用的是onShow函数


    2020-03-24
    赞同
    回复 4
    • 禾几
      禾几
      2020-03-24
      如果说是返回上级并触发上级函数的话,有方法可以的
      var pages = getCurrentPages();
      var beforePage = pages[pages.length - 2];
       beforePage.onLoad();
                wx.navigateBack({
                  delta: 1
                })
      2020-03-24
      回复
    • 陈
      2020-03-24回复禾几
      既然都考虑到了那就没问题了
      2020-03-24
      回复
    • 2020-03-24
      放在onshow的话,每次用户进入这个页面都会请求,如果业务需要的话,我觉得可以。但没必要,用户授权后,后端登录,登录成功后再发起查询订单的请求。可以封装个函数:每次授权,请求登录的时候,带个请求地址,当请求登录成功后,再次去请求你传入的地址即可。这种很多场景都会用到的。
      2020-03-24
      回复
    • 陈
      2020-03-24回复
      因为订单有根据派送状态的操作所以是需要最新的状态的,必须每次查看订单都要请求一次
      2020-03-24
      回复
  • 陈
    2020-03-24

    就会发现订单页因为已经缓存,不会再因为用户之后的授权而更新数据


    不是每次进入订单页面都要重新发起一次请求吗?

    2020-03-24
    赞同
    回复 3
    • 禾几
      禾几
      2020-03-24
      ?我的没有重新请求
      2020-03-24
      回复
    • 陈
      2020-03-24回复禾几
      那什么时候才会重新发起请求呢?
      2020-03-24
      回复
    • 禾几
      禾几
      2020-03-24回复
      重新请求可以自己设置,比如this.onLoad( ),还有就是像我上面那样关闭所有页面,再就是点击事件触发函数重新交互
      2020-03-24
      回复
登录 后发表内容