Junior — Middle
94
API сұраулары кезінде мерзімі өткен токендерді автоматты түрде өңдеу үшін Retrofit қолдануға бола ма?
Сұралған компаниялар
Viasat tech
AI-дан жауап
sobes.tech AI
Retrofit сам по себе не предоставляет встроенного механизма для автоматической обработки истекших токенов (например, обновления токена при получении 401 Unauthorized). Однако, это можно реализовать с помощью кастомного OkHttp интерсептора, который перехватывает ответы, проверяет код ошибки и при необходимости выполняет логику обновления токена и повторного запроса.
Пример использования интерсептора для обновления токена:
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) { // токен истек
synchronized(this) {
val newToken = tokenProvider.refreshToken() // обновляем токен
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // повторяем запрос с новым токеном
}
}
return response
}
}
Таким образом, Retrofit в связке с OkHttp интерсепторами позволяет реализовать автоматическую обработку истекших токенов.