Что такое Authenticator в Retrofit

«Что такое Authenticator в Retrofit» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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-токен может требовать отдельного вызова.