SIDLogin
Объект для работы партнера с авторизацией клиента в экосистеме SID. Предоставляет методы для создания URI авторизации, запуска аутентификации, получения результатов и управления процессом входа/выхода из профиля.
Для работы необходимо инициализировать и настроить SDK до вызова методов авторизации
Методы
SIDLogin.createLoginUri
Создает URI для логина клиента партнером.
redirectUri должен быть добавлен для вашего сервиса в привязке к clientId.
Для этого направьте запрос на support@ecom.sberbank.ru на добавление deeplink в список доверенных. В запросе указывается clientId и список deeplink, по которым будет производиться возврат в мобильное приложение партнера. Сотрудник банка добавит домен в список разрешенных.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| scope | Да | String | Список передаваемых данных на которые подписано приложение (через пробел) |
| state | Да | String | Уникальное значение для предотвращения подделки |
| nonce | Да | String | Уникальная строка для идентификации источника запроса |
| redirectUri | Да | String | Адрес для перенаправления после аутентификации |
| customTabRedirectUri | Да | String | Необходим для работы сценариев через веб SIDLogin.loginWithIDToCustomTab и SIDLogin.loginWithIDToCustomTab |
| codeChallenge | Да | String | Хэшированное значение секретного кода code_verifier |
| codeChallengeMethod | Да | String | Метод преобразования code_verifier в code_challenge |
| uriScheme | Да | String | Кастомная схема диплинка в формате app://host |
| loginHint | Да | String | Телефон для предзаполнения формы, для работы сценария [loginHint], формат "79ХХХХХХХХХ" |
Возвращаемое значение: Uri
SIDLogin.loginWithID
Запускает аутентификацию через МП СБОЛ. Если МП Сбол не установлено, запустится web-версия, аналогично запуску SIDLogin.loginWithIDToCustomTab.
Данный метод запускает диплинк в МП Сбол с флагом Intent.FLAG_ACTIVITY_NEW_TASK
Метод loginWithID следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| activity | Да | FragmentActivity | Для получения информации о МП Сбера и старта активити |
| uri | Да | Uri | URI с данными для запуска активити |
Возвращаемое значение: Boolean (успешность запуска)
SIDLogin.loginWithIDToCustomTab
Запускает аутентификацию в Custom Tabs с последующей авторизацией через web-страницу. 1. Запускает веб интерфейс авторизации Сбер ID в CustomTabs. Метод проверяет, наличие установленных браузеров, которые поддерживают CustomTabs. Если на устройстве есть такой браузер, метод запускает CustomTabs, если нет WebVew.
2. Запуск сценария во внешнем браузере. Если по какой-то причине браузера с поддержкой CustomTabs на устройстве нет и WebView так же не получилось запустить, метод запустит сценарий во внешнем браузере, если такой есть.
3. Отображение Toast, о том что вход не доступен. Если ничего нет, отобразится Toast с текстом ошибки: "Не нашли браузер. Скачайте любой и повторите вход по Сбер ID."
Метод loginWithID следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
Пример:
//Создание параметров для поддержки протокола 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(),
loginHint = "79ХХХХХХХХХ", // для поддержки loginHint
)
//Запуск аутентификации по Сбер ID, первым параметром нужно передать контекст
SIDLogin.loginWithIDToCustomTab(context, uri)
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| activity | Да | Activity | Активность для открытия CustomTabs |
| uri | Да | Uri | Авторизационный URI |
Возвращаемое значение: Boolean (успешность запуска)
SIDLogin.loginWithIDToWebView
Запускает аутентификацию чере з нативный WebView с последующей авторизацией через web-страницу.
Метод loginWithIDToWebView следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
Пример:
//Создание параметров для поддержки протокола 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(),
loginHint = "79ХХХХХХХХХ", // для поддержки loginHint
)
//Запуск аутентификации по Сбер ID, первым параметром нужно передать контекст
SIDLogin.loginWithIDToWebView(context, uri)
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| activity | Да | Activity | Активность для открытия WebView |
| uri | Да | Uri | Авторизационный URI |
Возвращаемое значение: Boolean (успешность запуска)
SIDLogin.getIDAuthResult (Intent)
Обрабатывает результат аутентификации из Intent.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| intent | Да | Intent | Intent с результатом авторизации |
Возвращаемое значение: SIDResultModel
SIDLogin.getIDAuthResult
Обрабатывает результат аутентификации из Uri.
| Параметр | Обязательный | Тип | Оп исание |
|---|---|---|---|
| uri | Да | Uri | Uri с результатом авторизации |
Возвращаемое значение: SIDResultModel
SIDLogin.getSeamlessUriScheme
Получает схему диплинка в формате app://host для бесшовной авторизации.
// Получаем uriScheme при старте бесшовного входа, запуск диплинка - appLink
val data = intent.data ?: return
val uriScheme = SID.Login.getSeamlessUriScheme(data)
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| uri | Да | Uri | Исходный Uri при переходе в МП партнера |
Возвращаемое значение: String
SIDLogin.autoAuth
Запускает аутентификацию через Сбер ID (только если МП Сбера установлено). Используется в сценарии бесшовного входа.
//Создание параметров для поддержки протокола PKCE.
val codeVerifier = PkceUtils.generateRandomCodeVerifier(SecureRandom())
val codeChallenge = PkceUtils.deriveCodeVerifierChallenge(codeVerifier)
// Получаем uriScheme при старте бесшовного входа, запуск диплинка - appLink
val data = intent.data ?: return
val uriScheme = SID.Login.getSeamlessUriScheme(data)
// Полученное значение необходимо передать в следующий метод `SID.Login.createUriForLogin` при создании диплинка авторизации.
val uri = SIDLogin.createLoginUri(
scope = "добавьте все необходимые вам scope",
state = "random_state",
nonce = "random_nonce",
redirectUri = "partner://redirect",
codeChallenge = codeChallenge,
codeChallengeMethod = PkceUtils.getCodeChallengeMethod()
uriScheme = uriScheme
)
// Запуск авторизации с полученной uriScheme
SIDLogin.autoAuth(this, uri)
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| uri | Да | Uri | Авторизационный URI |
Возвращаемое значение: Boolean (успешность запуска)
SIDLogin.logout
Разлогинивает клиента. Удаляет сессию и очищает данные авторизации.
SIDLogin.sendOtherAuth
Регистрирует результат авторизации через сторонний сервис.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| nameAuthService | Да | String | Название сервиса (GOOGLE, YANDEX и т.д.) |
| isSuccess | Да | Boolean | Успешность авторизации |
| isUserNew | Да | Boolean | Флаг нового пользователя |