Sobes.tech
Junior — Middle

API istekleri sırasında süresi dolmuş tokenleri otomatik olarak işlemek için Retrofit kullanılabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Retrofit kendisi, süresi dolmuş tokenların otomatik işlenmesi için yerleşik bir mekanizma sağlamaz (örneğin, 401 Unauthorized alındığında token güncelleme). Ancak, bu, yanıtları yakalayan, hata kodunu kontrol eden ve gerekirse token güncelleme ve tekrar istek yapma mantığını uygulayan özel bir OkHttp interceptörü kullanılarak gerçekleştirilebilir.

Token güncellemek için bir interceptör kullanım örneği:

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 süresi dolmuş
            synchronized(this) {
                val newToken = tokenProvider.refreshToken() // token güncelle
                request = chain.request().newBuilder()
                    .header("Authorization", "Bearer $newToken")
                    .build()
                return chain.proceed(request) // yeni token ile tekrar istek
            }
        }

        return response
    }
}

Bu şekilde, Retrofit ve OkHttp interceptörleri birlikte kullanılarak süresi dolmuş tokenların otomatik işlenmesi sağlanabilir.