Sobes.tech
Junior — Middle

Vai Retrofit var izmantot, lai automātiski apstrādātu derīguma termiņu beigušos tokenus API pieprasījumu laikā?

sobes.tech AI

Atbilde no AI

Retrofit pats par sevi nenodrošina iebūvētu mehānismu automātiskai beigušos tokena apstrādei (piemēram, tokena atjaunināšanai, saņemot 401 Unauthorized). Tomēr to var īstenot, izmantojot pielāgotu OkHttp interceptora, kas pārtrauc atbildes, pārbauda kļūdas kodu un, ja nepieciešams, veic tokena atjaunināšanu un atkārtotu pieprasījumu.

Tokena atjaunināšanas interceptora piemērs:

class AuthInterceptor(private val tokenProvider: TokenProvider) : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        var request = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer ${tokenProvider.getAccessToken()}")
            .build()

        val response = chain.proceed(request)

        if (response.code == 401) { // beigušies tokens
            synchronized(this) {
                val newToken = tokenProvider.refreshToken() // atjaunina tokenu
                request = chain.request().newBuilder()
                    .header("Authorization", "Bearer $newToken")
                    .build()
                return chain.proceed(request) // atkārtots pieprasījums ar jauno tokenu
            }
        }

        return response
    }
}

Tādējādi, Retrofit kopā ar OkHttp interceptoriem ļauj automātiski pārvaldīt beigušos tokenus.