Junior — Middle
Kan Retrofit worden gebruikt om automatisch verlopen tokens te verwerken bij het uitvoeren van API-aanvragen?
sobes.tech AI
Antwoord van AI
Retrofit zelf biedt geen ingebouwd mechanisme voor automatische verwerking van verlopen tokens (bijvoorbeeld het bijwerken van de token bij ontvangst van een 401 Unauthorized). Dit kan echter worden gerealiseerd met behulp van een aangepaste OkHttp interceptor, die antwoorden onderschept, de foutcode controleert en indien nodig de logica voor het vernieuwen van de token en het opnieuw verzenden van het verzoek uitvoert.
Voorbeeld van het gebruik van een interceptor om de token te vernieuwen:
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) { // token verlopen
synchronized(this) {
val newToken = tokenProvider.refreshToken() // vernieuw de token
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // herhaal het verzoek met de nieuwe token
}
}
return response
}
}
Op deze manier maakt Retrofit in combinatie met OkHttp interceptors het mogelijk om automatisch verlopen tokens te verwerken.