Запуск аутентификации через браузер Custom Tabs
Для входа через браузер Custom Tabs используется метод
SIDLogin.loginWithIDToCustomTab(activity: Activity, uri: Uri)
Метод loginWithIDToCustomTab следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
В данном сценарии для подтверждения входа используется браузерная вкладка Custom Tabs. Вкладка открывается поверх вашего приложения и оформляется в едином стиле, поэтому пользователь визуально остается внутри вашего продукта и не переключается в отдельное приложение браузера.
После подтверждения входа пользователя, по redirectUri произойдет редирект на нужный экран вашего приложения.
Далее необходимо обработать ответ Sber ID. Про обработку результата читайте в статье Обработка ответа после авторизации
Формирование ссылки и запуск сценария
Для формирования uri используйте:
- Метод
SIDLogin.createLoginUriпозволяет создатьuriдля авторизации по Сбер ID. - Передайте пустой "" customTabRedirectUri, необходимо для правильного формирования ссылки.
- Класс
PkceUtilsсодержит утилиты для создания значений параметров протокола PKCE (необязательные параметры, если вы не используете PKCE).
Обратите внимание, для работы данного сценария обязательно при создании URI передайте параметр customTabRedirectUri равный .
Если вы не используете данный сценарий, вам достаточно передать пустой customTabRedirectUri = "".
Данное ограничение связано с обратной совместимостью и техническими ограничениями, в будущем уйдем от данного костыля.
//Создание параметров для поддержки протокола PKCE.
val codeVerifier = PkceUtils.generateRandomCodeVerifier(SecureRandom())
val codeChallenge = PkceUtils.deriveCodeVerifierChallenge(codeVerifier)
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val uri = SIDLogin.createLoginUri(
scope = "добавьте все необходимые вам scope",
state = "random_state",
nonce = "random_nonce",
redirectUri = "partner://redirect",
customTabRedirectUri = "",// !!! Передать пустое значение ""
codeChallenge = codeChallenge,
codeChallengeMethod = PkceUtils.getCodeChallengeMethod()
)
//Запуск аутентификации по Сбер ID, первым параметром нужно передать контекст
SIDLogin.loginWithIDToCustomTab(context, uri)
Если все сделано верно, вы увидите веб окно входа по Сбер ID. При этом мобильное приложение Сбербанк Онлайн не поднимется вне зависимости установлен он или нет.
