Junior — Middle
Kann Retrofit verwendet werden, um abgelaufene Tokens bei API-Anfragen automatisch zu verarbeiten?
sobes.tech KI
Antwort von AI
Retrofit selbst bietet keinen integrierten Mechanismus zur automatischen Behandlung abgelaufener Tokens (z.B. Aktualisierung des Tokens bei Erhalt eines 401 Unauthorized). Dies kann jedoch mit einem benutzerdefinierten OkHttp-Interceptor umgesetzt werden, der die Antworten abfängt, den Fehlercode überprüft und bei Bedarf die Logik zur Token-Aktualisierung und erneuten Anfrage ausführt.
Beispiel für die Verwendung eines Interceptors zur Token-Aktualisierung:
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 abgelaufen
synchronized(this) {
val newToken = tokenProvider.refreshToken() // Token aktualisieren
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // Erneute Anfrage mit neuem Token
}
}
return response
}
}
Auf diese Weise ermöglicht Retrofit in Verbindung mit OkHttp-Interceptors die automatische Behandlung abgelaufener Tokens.