AppTokenEvents
Интерфейс, представляющий публичные события, генерируемые в рамках жизненного цикла токена. Используется для уведомления внешних слоев (ViewModel, Fragment) о состоянии токена, результатах операций и возможных ошибках. Реализует общий интерфейс SIDEvents.
Таблица событий AppTokenEvents
| Класс | Описание | Условия возникновения |
|---|---|---|
| HasExpire | Токен истек (срок действия превышен) | Токен достиг даты истечения срока жизни, требуется обновление токена |
| IsValid | Токен действителен и активен | Токен существует в хранилище, не истек и не требует обновления |
| Success | Успешное завершение операции с токеном | Токен успешно обновлен, проверен или сохранен в хранилище |
| ServiceError | Ошибка сервиса при работе с токеном | Ошибки валидации токена (HTTP 400/401/403), невалидный clientId или scope |
| RequireRelogin | Требуется повторная авторизация пользователя | Токен поврежден, отсутствует в хранилище или не подлежит восстановлению |
| LinkIsNotValid | Недействительная партнерская ссылка | Партнерская ссылка не прошла валидацию (некорректные OIDCParams или формат) |
| ServiceNotAvailable | Сервис временно недоступен | Ошибки сервера (HTTP 500/502/503), сетевые проблемы, недоступность сервисов Sber ID |
Полный список событий с примерами использования
HasExpire
Вызывается, когда токен нужно обновить
Пример использования:
when (event) {
is AppTokenEvents.HasExpire -> {
// Токен истек, требуется обновление
}
}
IsValid
Вызывается, если токен действителен (валиден и не истек).
Пример использования:
when (event) {
is AppTokenEvents.IsValid -> {
// Токен валиден, можно выполнять SSO операции
}
}
Success
Вызывается при успешной операции с токеном (обновление, сохранение).
Пример использования:
when (event) {
is AppTokenEvents.Success -> {
// Успешное обновление/сохранение токена
analytics.logEvent("app_token_updated")
showSuccessSnackbar("Токен успешно обновлен!")
checkAppTokenForValid() // Дополнительная проверка после обновления
}
}
ServiceError
Вызывается при ошибке сервиса (400/401/403-ошибки, невалидный токен).
Пример использования:
when (event) {
is AppTokenEvents.ServiceError -> {
// Ошибка валидации токена на сервере
analytics.logEvent("app_token_service_error")
showErrorDialog(
title = "Ошибка сервиса",
message = "Проблема с валидацией токена. Попробуйте еще раз."
)
scheduleTokenRetry() // Планирование повторной попытки
}
}
RequireRelogin
Вызывается, когда токен поврежден или отсутствует. Требуется полная переавторизация пользователя.
Пример использования:
when (event) {
is AppTokenEvents.RequireRelogin -> {
// Требуется полная переавторизация
}
}
LinkIsNotValid
Вызывается, когда партнерская ссылка недействительна (некорректные OIDCParams).
Пример использования:
when (event) {
is AppTokenEvents.LinkIsNotValid -> {
// Невалидная ссылка для SSO перехода
}
}
ServiceNotAvailable
Вызывается, когда сервис недоступен (500-ошибка сервера, сетевые проблемы).
Пример использования:
when (event) {
is AppTokenEvents.ServiceNotAvailable -> {
// Сервис Sber ID временно недоступен
}
}