TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.6K subscribers
Post #8715 6.9K
Обновление API токена в OkHttp/Retrofit

OkHttp поддерживает возможность обновления токена через специальный интерфейс Authenticator, которые срабатывает если API запрос на сервер вернет код 401 Unauthorized

class TokenAuthenticator(private val tokenProvider: TokenProvider) : Authenticator {

@Throws(IOException::class)
override fun authenticate(route: Route?, response: Response): Request? = runBlocking {
// Получаем новый токен
val newToken = tokenProvider.refreshToken()

// Если токен не удалось обновить, возвращаем null
if (newToken == null) return null

// Сохраняем новый токен
tokenProvider.saveToken(newToken)

// Создаем новый запрос с обновленным токеном
return response.request.newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
}
}

// Пример API для работы с токеном
interface TokenProvider {
suspend fun getSavedToken(): String?
suspend fun saveToken(newToken: String)
suspend fun refreshToken(token: String?): String?
}

Добавление Authenticator в OkHttp
fun createOkHttpClient(tokenProvider: TokenProvider): OkHttpClient {
return OkHttpClient.Builder()
.authenticator(TokenAuthenticator(tokenProvider))
.build()
}


Я часто сталкивался с тем, что реализация бэкенда возвращает отличный HTTP код и тогда уже приходится делать решение через Interceptor. Делитесь в комментариях как вы пишите логике по обновлению токенов.

#okhttp #сеть #лучшиепрактики
  • 🔥 38
  • 👍 11
  • 👎 4
  • ❤ 1
  • 🤯 1
More from @android_broadcast
  1. Oct 14, 2026#видеозаписи #МобильныйВторник Осенний Mobius — уже на следующей неделе! А сегодня мы откр…
  2. Oct 14, 2026🔐 Волна утечек в Японии: эндпоинты и ключи API достают из публичных приложений 8 октября…
  3. Oct 14, 2026🛒 Google Play: свои вайб-код приложения можно ставить на устройство без аккаунта разработ…
  4. Oct 13, 2026⭐️🤖 Gemini 4 Argon пришёл в Android-разработку Google открыл Android-разработчикам свою н…
  5. Oct 13, 2026🤖 Keep-аннотации R8 вместо ручных -keep правил: вышел AndroidX Annotation Keep Недавно пи…
  6. Oct 13, 2026🤖 Googlebook получил Linux-терминал: Debian в VM для кода и AI-агентов Google выкатил пре…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →