Авторизация через мобильное приложение Сбербанк Онлайн
Для корректной работы необходимо инициализировать SDK SDK до вызова методов авторизации
Описание сценария и метода loginWithID
Для входа через мобильное приложение Сбербанк Онлайн используется метод
SID.Login.loginWithID(activity: FragmentActivity, uri: Uri)
Описание параметров
FragmentActivity
используется для запуска приложения Сбербанк Онлайн или веб Страницы
Uri
для передачи всех данных, необходимых для аутентификации, таких как clientId, scope, state, nonce, redirectUri, codeChallenge и codeChallengeMethod.
Этот метод выполняет следующие действия:
Проверка наличия мобильного приложения Сбербанк Онлайн. Метод проверяет, установлено ли на устройстве пользователя мобильное приложение Сбербанк Онлайн. Если приложение установлено, метод запускает его для выполнения процесса входа.
Запуск веб-страницы Сбер ID. Если мобильное приложение Сбербанк Онлайн не установлено на устройстве пользователя, метод запускает веб-страницу Сбер ID для выполнения процесса входа.
Таким образом, этот метод обеспечивает гибкий способ входа, позволяя пользователям использовать как мобильное приложение, так и веб-страницу Сбер ID в зависимости от наличия приложения на их устройстве.
Если вы подключаете aar файлом зависимость (legacy):
dependencies {
implementation "androidx.browser:browser:1.3.0"
}
Указанная версия актуальна на момент публикации, но вы можете использовать более новую версию, если она доступна.
Формирование ссылки и запуск сценария
Для формирования uri
используйте:
- Метод
SID.Login.createUriForLogin
позволяет создатьuri
для авторизации по Сбер ID. - Класс
PkceUtils
содержит утилиты для создания значений параметров протокола PKCE (необязательные параметры, если вы не используете PKCE).
Обратите внимание, что clientID передается через настройки SDK
Пример реализации
//Создание параметров для поддержки протокола PKCE.
val codeVerifier = PkceUtils.generateRandomCodeVerifier(SecureRandom())
val codeChallenge = PkceUtils.deriveCodeVerifierChallenge(codeVerifier)
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val uri = SID.Login.createUriForLogin(
clientId = "clientId вашего сервиса", // на данный момент необходимо дублировать параметр
scope = "добавьте все необходимые вам scope",
state = "random_state",
nonce = "random_nonce",
redirectUri = "partner://redirect",
codeChallenge = codeChallenge,
codeChallengeMethod = PkceUtils.getCodeChallengeMethod()
)
//Запуск аутентификации по Сбер ID, первым параметром нужно передать контекст
SID.Login.loginWithID(this, uri)
Прочитать про общую схему входа, а так же параметры можно на страницу подключение Сбер ID
redirectUri
должен быть добавлен для вашего сервиса в привязке к clientId.
Для этого направьте запрос на support@ecom.sberbank.ru на добавление deeplink в список доверенных. В запросе указывается clientId и список deeplink, по которым будет производиться возврат в мобильное приложение партнера. Сотрудник банка добавит домен в список разрешенных.
Если все сделано верно, запустится мобильное приложение Сбербанк Онлайн или веб окно с различными способами идентификации входа по Сбер ID.
После авторизации в мобильном приложение Сбербанк Онлайн пользователя, по redirectUri
произойдет редирект на нужный экран вашего приложения.
Про обработку результата читайте в статье Обработка ответа после авторизации