Для корректной работы необходимо инициализировать SDK SDK до вызова методов авторизации
Описание сценария и метода loginWithID
Для входа через мобильное приложение Сбербанк Онлайн используется метод
SID.Login.loginWithID(activity: FragmentActivity, uri: Uri)
Описание параметров
FragmentActivity
используется для запуска приложения Сбербанк Онлайн или веб Страницы
Uri
для передачи всех данных, необходимых для аутентификации, таких как clientId, scope, state, nonce, redirectUri, codeChallenge и codeChallengeMethod.
Метод loginWithID
следует вызывать исключительно в главном потоке. Это необходимо для проверки доступности WebView и для отображения сообщения Toast в случае, если WebView недоступен.
Этот метод выполняет следую щие действия:
Проверка наличия мобильного приложения Сбербанк Онлайн. Метод проверяет, установлено ли на устройстве пользователя мобильное приложение Сбербанк Онлайн. Если приложение установлено, метод запускает его для выполнения процесса входа.
Запуск веб-страницы Сбер ID. Если мобильное приложение Сбербанк Онлайн не установлено на устройстве пользователя, метод запускает веб-страницу Сбер ID для выполнения процесса входа.
Таким образом, этот метод обеспечивает гибкий способ входа, позволяя пользователям использовать как мобильное приложение, так и веб-страницу Сбер ID в зависимости от наличия приложения на их устройстве.
Details
Если вы подключаете aar файлом зависимость (legacy):
Чтобы сценарий сработал, необходимо добавить зависимость на библиотеку браузера AndroidX в ваш проект. Для этого в файле build.gradle, в разделе зависимостей, добавьте следующую строку, если ее еще нет:dependencies {
implementation "androidx.browser:browser:1.4.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(
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
произойдет редирект на нужный экран вашего приложения.
Про обработку результата читайте в статье Обработка ответа после авторизации
Перечень допустимых параметров 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 |