Ответ
Authenticator в Retrofit — это интерфейс для автоматического обновления токенов при получении 401 Unauthorized. Он вызывается, когда сервер отклоняет запрос из-за невалидного токена.
Пример:
val authenticator = Authenticator { _, response ->
if (response.code == 401) {
val newToken = refreshToken() // Обновляем токен
response.request.newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
} else null // Не обрабатываем другие коды
}
val client = OkHttpClient.Builder()
.authenticator(authenticator)
.build()
Нюансы:
- Не забывайте обрабатывать кейсы, когда refresh-токен тоже протух (рекурсия).
- Для сложных сценариев (например, параллельных запросов) используйте синхронизацию или очередь.
- В некоторых API refresh-токен может требовать отдельного вызова.