Sobes.tech
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.