Sobes.tech
Junior — Middle

Kas võib kasutada Retrofitit automaatselt aegunud tokenite töötlemiseks API-päringute ajal?

sobes.tech AI

Vastus AI-lt

Retrofit ise ise automaatselt aegunud tokenite töötlemise mehhanismi ei paku (näiteks tokeni uuendamine 401 Unauthorized vastuse saamisel). Kuid seda saab teostada kasutades kohandatud OkHttp interceptorit, mis haarab vastuseid, kontrollib veakoodi ja vajadusel teostab tokeni uuendamise ning taasküsimise.

Tokeni uuendamise interceptori näide:

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) { // aegunud token
            synchronized(this) {
                val newToken = tokenProvider.refreshToken() // uuenda token
                request = chain.request().newBuilder()
                    .header("Authorization", "Bearer $newToken")
                    .build()
                return chain.proceed(request) // taasküsi uue tokeniga
            }
        }

        return response
    }
}

Seega võimaldab Retrofit koos OkHttp interceptorsüsteemiga automaatselt hallata aegunud tokeneid.