Junior — Middle
Se poate folosi Retrofit pentru a gestiona automat tokenurile expirate în timpul solicitărilor API?
sobes.tech AI
Răspuns de la AI
Retrofit în sine nu oferă un mecanism încorporat pentru gestionarea automată a tokenurilor expirate (de exemplu, actualizarea tokenului la primirea unui 401 Unauthorized). Cu toate acestea, acest lucru poate fi realizat folosind un interceptor personalizat OkHttp, care intercepta răspunsurile, verifică codul de eroare și, dacă este necesar, execută logica de actualizare a tokenului și re-trimiterea cererii.
Exemplu de utilizare a unui interceptor pentru actualizarea tokenului:
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) { // tokenul a expirat
synchronized(this) {
val newToken = tokenProvider.refreshToken() // actualizează tokenul
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // re-trimite cererea cu noul token
}
}
return response
}
}
Astfel, Retrofit împreună cu interceptors de la OkHttp permit implementarea automată a gestionării tokenurilor expirate.