关于将 `access_token_expired_at `设置为 0 不刷新 `token`的问题?

    let accessToken = wepy.getStorageSync('access_token')
    // let accessToken = await getToken()

    // Token 存在则说明已登录
    if (accessToken) {
        // 测试 authRequest 接口
        let userResponse = await api.authRequest('user')

        this.userInfo = userResponse.data
        this.loggedIn = true
        this.$apply()
    }

access_token_expired_at设置为0之后,不会发起 refreshToken 的请求啊?

onShow() 进来拿到本地的access_token,但是这个 token已经过期了,onShow()就走完了啊。为什么会出现如作者,重新刷新refreshToken的请求啊。甚是不解。

感觉对着代码敲,都少敲了几个字母,然而已经对了好几遍了。没有发现不对经的地方。可以看到当 JWT 过期后,先调用刷新接口获取新的 Token 之后再请求 获取登录用户信息 接口。这里可以再讲解一下逻辑吗?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

@liyu001989 找到问题了。敲代码的时候在 getToken 方法中,把 let refreshResponse = await refreshToken(accessToken) 写成了 let refreshToken = await refreshToken(accessToken)!!!您提醒了我,第一时间应该看JS报错信息的,而不是去对代码对不对。

5年前 评论
讨论数量: 3
liyu001989

file

authRequest 会先调用 getToken,然后就是检测token是否过期,过期了调用 refreshToken 。

你可以在 getToken 和 refreshToken 方法中增加一些日志 console.log 看看执行流程

5年前 评论

@liyu001989 嗯,刚才又重新走了一遍代码,发现是在authRequest中调用的getToken,我试一试console.log调试一下

5年前 评论

@liyu001989 找到问题了。敲代码的时候在 getToken 方法中,把 let refreshResponse = await refreshToken(accessToken) 写成了 let refreshToken = await refreshToken(accessToken)!!!您提醒了我,第一时间应该看JS报错信息的,而不是去对代码对不对。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!