收藏
回答

登录逻辑处理问题求解?

目前在开发小程序,遇到一个问题,希望大家能帮忙提供下解决思路。

问题描述:

我在onLaunch中执行了以下操作:

  1. wx.getStorageSync('token');  //此token是后台接口根据openid和sessionKey生成的

  2. 若token存在,则调用wx.checkSession判断session是否失效

  3. 若session失效,则调用wx.login获取code,然后用code从后台换取新的token缓存下来

现在小程序打开的首页需要在请求头中包含这个token,后台接口才能验证通过,并返回数据,但是因为wx.checkSession、wx.login、wx.request三个接口都是异步的,所以首页的接口调用时,可能还没有拿到这个token,因为所有的接口都需要这个token,所以我想在app.js中实现获取这个token的逻辑。

请问如何保证拿到这个token之后再去调用其他接口?

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

3 个回答

  • G-STEPS街舞工作室
    G-STEPS街舞工作室
    2019-07-31

    你这样通过不了审核的,亲身经历,在用户没有任何授权的情况下,拿不到登录的 code。我们的小程序之前也是跟你一样的逻辑,一进页面,马上就 wx.login,事实上是不会给你返回内容的。

    建议修改下逻辑,在页面上放置一个登录按钮。另外官方好像推荐是在用户不登陆的情况下也能使用部分小程序,如果你这边不登录就不让用,很大可能也过不了审核。

    2019-07-31
    有用
    回复 3
    • xiaoming
      xiaoming
      2019-07-31
      好的,谢谢提醒,我去找需求的说下。
      2019-07-31
      回复
    • 2019-07-31
      应该是微信改策略了,我记得以前我做的一个类似的就是在登录时直接调用 wx.login api。
      2019-07-31
      回复
    • 🤔
      🤔
      2019-11-26
      楼主的意思是一打开微信小程序就先调用wx.login,然后后台用code换取openid并生成token返回给前端,之后所有接口都需要带上token进行请求,这个和业务上的登录没有关系吧,这样审核也会被拒绝?
      2019-11-26
      回复
  • 2019-07-31

    所以你们不需要用户主动去登录的吗?比如说跳转登录页之类的?   如果是需要的那么后端可以判断token是否还有效,如果失效统一返回错误码,前端在网络请求哪里统一拦截错误码,针对错误码做跳转登录逻辑(刷新登录态)

    2019-07-31
    有用
    回复 2
    • xiaoming
      xiaoming
      2019-07-31
      没有跳转登录页的逻辑,登录是代码中直接调用接口登录然后缓存数据的,网络请求哪里有拦截,未登录时自动调用登录流程,然后重新调自动调接口
      2019-07-31
      回复
    • 2019-07-31
      统一封装 ajax 请求就可以了,所有的页面的请求都用封装好的ajax 去请求
      2019-07-31
      回复
  • 粗茶淡饭
    粗茶淡饭
    2019-07-31

    一进去就要登录吗?不登录不就拿不到token了吗?也就访问不了首页  不建议这样 ,审核不好通过的

    2019-07-31
    有用
    回复 2
    • xiaoming
      xiaoming
      2019-07-31
      是的,一进去需要拿到用户的openId,后台接口都需要这个openId的。
      2019-07-31
      回复
    • 粗茶淡饭
      粗茶淡饭
      2019-07-31回复xiaoming
      做个游客模式吧。不然还要改的。
      2019-07-31
      回复
登录 后发表内容