首页 > 解决方案 > OkHttp 身份验证器刷新令牌循环

问题描述

当从服务器返回 401 响应时,我在 OkHttp Authenticator 中有这段代码来刷新令牌,但是一旦返回 401,这段代码就会开始循环,每次都有新的访问和刷新令牌,知道有什么问题吗?

override fun authenticate(route: Route?, response: Response): Request? {
    val refreshToken = tokenManager.getRefreshTokenFromSharedPrefs()

    val refreshTokenRequest = NetworkRefreshTokenRequest(refreshToken!!)

    val tokenResponse = authApi.api.refreshToken(refreshTokenRequest).execute()

    return when(tokenResponse.isSuccessful){
        true -> {
            val tokens = tokenResponse.body()!!

            Timber.tag("AUTHENTICATOR TOKEN: ").i(tokens.token)
            Timber.tag("AUTHENTICATOR R_TOKEN: ").i(tokens.refreshToken)

            tokenManager.saveTokensToSharedPrefs(tokens.token, tokens.refreshToken)
            response.request().newBuilder().header("Authorization", "Bearer ${tokens.token}").build()
        }
        else -> null
    }

}```

标签: androidkotlinokhttp

解决方案


推荐阅读