Вступить в клуб →
сложнаявопросСеть: Retrofit, OkHttp и сериализация

Главный экран делает 5 запросов — сервер получает 5 обновлений токена и разлогинивает

class TokenAuthenticator(private val auth: AuthRepository) : Authenticator {
    override fun authenticate(route: Route?, response: Response): Request? {
        val newToken = auth.refreshBlocking() ?: return null
        return response.request.newBuilder()
            .header("Authorization", "Bearer $newToken").build()
    }
}

Токен истёк, главный экран параллельно отправил 5 запросов, все получили 401. Сервер одноразовый refresh-токен принимает только один раз: первое обновление успешно, остальные четыре получают ошибку, и пользователя выкидывает на логин. Как исправить?

  • Синхронизировать refresh и проверять, не обновлён ли токен
  • Перенести обновление токена в Interceptor
  • Отправлять запросы экрана строго по очереди
  • Возвращать null, чтобы OkHttp сам повторил запрос

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела