Для корректной работы необходимо инициализировать SDK SDK до вызова методов авторизации
Описание сценария и метода loginWithIDToCustomTab
Для входа через единое веб окно Сбер ID используется метод
SID.Login.loginWithIDToCustomTab(context: Context, uri: Uri)
Описание параметров:
Context
используется для запуска web интерфейса
Uri
для передачи всех данных, необходимых для аутентификации, таких как clientId, scope, state, nonce, redirectUri, customTabRedirectUri, codeChallenge и codeChallengeMethod.
Метод loginWithIDToCustomTab
следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
Этот метод выполняет сл едующие действия:
1. Запускает веб интерфейс авторизации Сбер ID в CustomTabs. Метод проверяет, наличие установленных браузеров, которые поддерживают CustomTabs. Если на устройстве есть такой браузер, метод запускает CustomTabs, если нет WebVew.
2. Запуск сценария во внешнем браузере. Если по какой-то причине браузера с поддержкой CustomTabs на устройстве нет и WebView так же не получилось запустить, метод запустит сценарий во внешнем браузере, если такой есть.
3. Отображение Toast, о том что вход не доступен. Если ничего нет, отобразится Toast с текстом ошибки: "Не нашли браузер. Скачайте любой и повторите вход по Сбер ID."
Таким образом, этот метод обеспечивает гибкий способ входа, позволяя пользователю с большой вероятностью отобразить войти по Сбер ID через web интерфейс.
Details
Если вы подключаете aar файлом зависимость (legacy):
Чтобы сценарий сработал, необходимо добавить зависимость на биб лиотеку браузера AndroidX в ваш проект. Для этого в файле build.gradle, в разделе зависимостей, добавьте следующую строку, если ее еще нет:dependencies {
implementation "androidx.browser:browser:1.4.0"
}
Указанная версия актуальна на момент публикации, но вы можете использовать более новую версию, если она доступна.
Формирование ссылки и запуск сценария
Обратите внимание, что clientID передается через настройки SDK
Для формирования uri
используйте:
- Метод SID.Login.createUriForLogin позволяет создать
uri
для авторизации по Сбер ID. - Передайте customTabRedirectUri deeplink на ваше приложение, позволяет подтвердить вход через мобильное приложение Сбербанк Онлайн.
- Класс PkceUtils содержит утилиты для создания значений параметров протокола PKCE (необязательные параметры, если вы не используете PKCE).
Обратите внимание, для работы данного сценария обязательно при создании URI передайте параметр customTabRedirectUri
.
Если вы не используете данный сценарий, вам достаточно передать пустой customTabRedirectUri = "".
Данное ограничение связано с обратной совместимостью и техническими ограничениями, в будущем уйдем от данного костыля.
//Создание параметров для поддержки протокола PKCE.
val codeVerifier = PkceUtils.generateRandomCodeVerifier(SecureRandom())
val codeChallenge = PkceUtils.deriveCodeVerifierChallenge(codeVerifier)
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val uri = SID.Login.createUriForLogin(
scope = "добавьте все необходимые вам scope",
state = "random_state",
nonce = "random_nonce",
redirectUri = "partner://redirect",
customTabRedirectUri = "app://customtab_redirect/",// или пустое значение ""
codeChallenge = codeChallenge,
codeChallengeMethod = PkceUtils.getCodeChallengeMethod()
)
//Запуск аутентификации по Сбер ID, первым параметром нужно передать контекст
SID.Login.loginWithIDToCustomTab(context, uri)
Прочитать про общую схему входа, а так же параметры можно на страницу подключение Сбер ID
redirectUri
и customTabRedirectUri
должны быть добавлены для вашего сервиса в привязке к clientId.
Для этого направьте запрос на support@ecom.sberbank.ru на добавление redirectUri
и customTabRedirectUri
в список доверенных. В запросе указывается clientId и список deeplink, по которым будет производиться возврат в мобильное приложение партнера. Сотрудник банка добавит домен в список разрешенных.
Если все сделано верно, вы увидите веб окно входа по Сбер ID. При этом мобильное приложение Сбербанк Онлайн не поднимется вне зависимости установлен он или нет.
Про обработку результата читайте в статье Обработка ответа после авторизации
Подтверждение входа через мобильное приложение Сбербанк Онлайн
Сейчас данная функция работает только для партнеров на ЕСА (единая система авторизации), legacy решение для Сбер ID. В будущем она будет поддержана и на новом решении. Если будут вопросы на почту support_sberid@sber.ru
Параметр customTabRedirectUri
позволяет вернуться после подтверждения через мобильное приложении Сбербанк онлайн и продолжить работу в том же веб окне.
Вам необходимо только зарегистрировать activity ReturnToCustomTabsSIDActivity в AndroidManifest вашего приложения, которая открывается поверх окна с CustomTabs и сразу закрывается. Тем самым происходит возврат на то самое веб окно, с которого начиналась авторизация в вебе.

<activity
android:name="sid.sdk.auth.view.activity.ReturnToCustomTabsSIDActivity"
android:screenOrientation="portrait"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="customtab_redirect"
android:scheme="app" />
</intent-filter>
</activity>
android:host и android:scheme соответствуют customTabRedirectUri
из предыдущих шагов.
redirectUri
и customTabRedirectUri
должны быть добавлены для вашего сервиса в привязке к clientId.
Для этого направьте запрос на support@ecom.sberbank.ru на добавление redirectUri
и customTabRedirectUri
в список доверенных. В запросе указывается clientId и список deeplink, по которым будет производиться возврат в мобильное приложение партнера. Сотрудник банка добавит домен в список разрешенных.
Единое веб окно Сбер ID после восстановления продолжит свою работу и в результате, после авторизации пользователя, по redirectUri
произойдет редирект на нужный экран вашего приложения. Про обработку результата читайте в статье Обработка ответа после авторизации
Передача номера на OIDC страницу
Вы можете при старте единого веб окна передать телефон пользователя, который пользователь ввел на ваших экранах входа. Это позволит сразу запустить подтверждение и ускорить вход.
Для этого при формировании uri
передайте параметр loginHint
в формате
Название параметра | Обязательный | Описание | Формат | Пример |
---|---|---|---|---|
loginHint | нет | При передаче параметра номер телефона пользователя автоматически будет использован на странице входа по Сбер ID | должен соответствовать паттерну: ^(7)([349]\d2 | 8[0-7]\d1)(\d7)$ |
//Создание Uri с параметрами для аутентификации, все значения нужно поменять на свои, тут указаны примеры
val uri = SID.Login.createUriForLogin(
scope = "добавьте все необходимые вам scope",
state = "random_state",
nonce = "random_nonce",
redirectUri = "partner://redirect",
customTabRedirectUri = "app://customtab_redirect/",
codeChallenge = codeChallenge,
loginHint = "79ХХХХХХХХХ",
codeChallengeMethod = PkceUtils.getCodeChallengeMethod()
)
Кастомизация окна авторизации
В SDK есть возможность кастомизации встроенного браузера, который появляется при входе через веб окно Сбер ID.
Для этого необходимо передать через Settings.setUIPreferences параметр themeColor со значениями light
и dark
для светлой и темной темы соответственно.

val themeColor = SIDColor(
light = Color.parseColor("#68B1F8"),
dark = Color.parseColor("#ff3b58")
)
val preferences = SIDPreferences(themeColor = themeColor)
Settings.setUIPreferences(preferences)
}
SIDPreferences
содержит гораздо больше настроек, они необходимы для работы ЕЛК и описаны в отдельных инструкциях.
Статья на данном портале по ЕЛК готовится и скоро в ней мы распишем и этот метод.
Если вы поддерживаете лишь одну тему, перешлите два одинаковых цвета в параметры themeColorLight
и themeColorDark
Перечень допустимых параметров Scope
Параметры scope позволяют указать, к каким данным пользователя вы хотите получить доступ в процессе авторизации. Это важно для соблюдения принципов минимальной необходимости и прозрачности обработки персональных данных. Ниже в таблице представлен список всех доступных scope для Сбер ID:
Scope | Наименование поля в ответе | Описание | Пример |
---|---|---|---|
Пакет Light | |||
openid (обязательно) | sub | Неизменный уникальный идентификатор клиента, передаваемый внешним потребителям. | "sub":"e327493e-979a-461f-9ca5-edfab9d6fbab" |
email | Адрес электронной почты | "email":“personal@mail.ru” | |
mobile | phone_number | Номер телефона | "phone_number":"+7 (000) 000000” |
Пакет Standart | |||
birthdate | birthdate | Дата рождения (формат ГГГГ-ММ-ДД) | "birthdate":"0000-00-00" |
name | family_name , given_name , middle_name | Фамилия Имя Отчество | "family_name":"Фамилия" "given_name":"Имя" "middle_name":"Отчество" |
gender | gender | Пол: 1 – мужчина; 2 – женщина; | "gender":1, |
Пакет Professional | |||
maindoc | identification | Полные данные паспорта: серия,номер,орган, выдавший паспорт,дата выдачи паспорта (формат ГГГГ-ММ-ДД),код подразделения | "identification":{ "series":"00 00", "number":"000000", "issued_by":"Орган выдавший документ", "issued_date":"0000-00-00", "code":"000-000" } |
inn | inn | ИНН номер | "inn":{ "number":"0000000" } |
snils | snils | СНИЛС номер | "snils":{ "number":"0000000" } |
driving_license | driving_license | Номер водительского удостоверения | "driving_license":{ "number":"111111" } |
international_passport | international_passport | Заграничный паспорт гражданина РФ:серия документа (формат 00 00),номер документа(формат 000000),кем выдан, дата выдачи (формат ГГГГ-ММ-ДД),дата окончания (формат ГГГГ-ММ-ДД),имя,фамилия | "international_passport":{ "series":"777", "number":"333", "issued_by":"рога и копыта", "issued_date":"1981-01-01", "planned_end_date":"1999-02-01", "name":"name", "surname":"surname" } |
priority_doc | priority_doc | Данные документа, удостоверяющего личность:тип,серия документа (формат 00 00),номер документа (формат 000000),кем выдан, дата выдачи (формат ГГГГ-ММ-ДД),код. Выводится один документ в соответствии со списком приоритетов:Паспорт РФ, Загранпаспорт гражданина РФ, Военный билет, Паспорт моряка, Временное удостоверение, Паспорт иностранного граданина, Вид на жительство иностранного гражданина. Доступные типы документов:
| "priority_doc":{ "type":17, "series":"777", "number":"333", "issued_by":"рога и копыта", "issued_date":"1981-01-01", "code":"adasd" } |
citizenship | citizenship | Гражданство: последняя по актуальности страна гражданства (наименование на русском языке) и ее код (ОКСМ, буквенное обозначение – Альфа-3) | "citizenship":{ "country_code":"countryCode", "country_name":"countryName" } |
place_of_birth | place_of_birth | Место рождения – город рождения клиента (текстовое поле, не кодируется) | "place_of_birth":”Nsk” |
address_reg | address_reg | Адрес регистрации: полный адрес, код ФИАС, почтовый индекс, страна, регион, район, город, поселение, улица, дом, строение, корпус, квартира | "address_reg":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
work_address | work_address | Рабочий адрес: полный адрес, код ФИАС, почтовый индекс, страна, регион, район, город, поселение, улица, дом, строение, корпус, квартира | "work_address":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
address_of_actual_residence | address_of_actual_residence | Адрес места жительства/доставки: полный адрес,код ФИАС,почтовый индекс,страна,регион,район,город,поселение,улица,дом,строение,корпус,квартира | "address_of_actual_residence":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
delivery_address | delivery_address | Адрес для доставки: полный адрес,код ФИАС,почтовый индекс,страна,регион,район,город,поселение,улица,дом,строение,корпус,квартира | "delivery_address":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
is_company_employee | is_company_employee | Признак сотрудника ПАО "Сбербанк" | "is_company_employee":true, |
sts | sts | Номер СТС | "sts":{ "number":"00 00 00000" } |
previous_identification | previous_identification | Реквизиты ранее выданного паспорта гражданина РФ: Серия документа, Номер документа, Кем выдан, Дата выдачи | "previous_identification":{ "series":"00 00", "number":"000 000", "issued_by":"Орган выдавший документ", "issued_date":"0000-00-00" } |
previous_name | previous_family_name , previous_given_name , previous_middle_name | Предыдущие фамилия, имя, отчество | "previous_family_name":"Фамилия" "previous_given_name":"Имя" "previous_middle_name":"Отчество" |
education | education | Сведения об образовании:Код + описание,начальное,среднее,среднее специальное,высшее,магистратура и пр. | "education":{ "code":"1", "description":"начальное" } |
place_of_work | place_of_work | Наименование организации(место работы) | "place_of_work": "место работы", |
job_title | job_title | Наименование занимаемой должности | "job_title": "должность" |
marital_status | marital_status | Семейное положение:Код + описание,холост,женат,разведен,вдовец/ вдова,раздельное проживание,гражданский брак и пр. | "marital_status":{ "code":"1", "description":"холост" } |
is_self_employed | is_self_employed | Признак самозанятого | "is_self_employed":true |