小编J.f*_*.fr的帖子

成功刷新令牌请求后,OkHttp Authenticator循环

我实现了okhttp3.Authenticator与Retrofit 2一起扩展的类,用于处理android应用程序中的401错误。它应该调用refreshToken request,然后如果成功,则使用新的访问令牌重新调用所需的请求。问题是成功获取刷新令牌后,我的TokenAuthenticator...会一次又一次刷新令牌,直到达到某个限制。你有什么线索吗?

TokenAuthenticator类:

class TokenAuthenticator : Authenticator {

    private val notLoggedResponseCode = 401
    private val successResponseCode = 200
    private val refreshTokenGrantType = "refresh_token"

    override fun authenticate(route: Route?, response: okhttp3.Response?): Request? {

        if (response?.code() == notLoggedResponseCode) {

            val refreshTokenResponse: Response<Authorization> = RestController
                    .getInstance()
                    .basicRetrofit
                    .create(AuthRepository::class.java)
                    .refreshToken(
                            Credentials.basic(BuildConfig.CLIENT_ID, BuildConfig.CLIENT_SECRET),
                            refreshTokenGrantType,
                            UserSession.getInstance().authorization?.refreshToken!!)
                    .execute()



            return if (refreshTokenResponse.code() == successResponseCode) {
                UserSession.getInstance().authorization = refreshTokenResponse.body() //updating token
                UserSession.getInstance().saveAuthorizationData()

                // Every time flow is here, so new access token is obtained.
                // …
Run Code Online (Sandbox Code Playgroud)

android kotlin okhttp retrofit2 okhttp3

1
推荐指数
1
解决办法
861
查看次数

标签 统计

android ×1

kotlin ×1

okhttp ×1

okhttp3 ×1

retrofit2 ×1