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.