Junior — Middle
Ar galima naudoti Retrofit automatiškai apdoroti pasibaigusius tokenus API užklausų metu?
sobes.tech AI
Atsakymas iš AI
Retrofit pats sauje neuztikrina įmontuoto mechanizmo automatiškai apdoroti pasibaigusį tokeną (pavyzdžiui, atnaujinti tokeną gaunant 401 Unauthorized). Tačiau tai galima įgyvendinti naudojant individualų OkHttp interceptorę, kuri perima atsakymus, tikrina klaidos kodą ir, jei reikia, atlieka tokeno atnaujinimo logiką ir pakartotinį užklausimą.
Tokeno atnaujinimo interceptorės pavyzdys:
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) { // pasibaigęs tokenas
synchronized(this) {
val newToken = tokenProvider.refreshToken() // atnaujinti tokeną
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // pakartoti užklausą su nauju tokenu
}
}
return response
}
}
Taip, Retrofit kartu su OkHttp interceptoriais leidžia įgyvendinti automatinį pasibaigusio tokeno valdymą.