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