Аутентификация на веб-странице партнера внутри мобильного приложения Сбербанк Онлайн (App to webview)
Внутри мобильного приложения Сбербанк Онлайн есть возможность открывать сайт партнера во встроенном браузере (Safari View Controller/Google Chrome Custom Tabs) по клику на различные баннеры.
Для того, чтобы клиент мог бесшовно (без ввода логина и пароля) войти по Сбер ID на сайт партнера необходимо вызвать сценарий входа по Сбер ID по deeplink.
Вызывать сценарий входа по Сбер ID по deeplink можно только из встроенного браузера внутри мобильного приложения Сбербанк Онлайн.
Если вызвать его из стороннего браузера, то вход по Сбер ID завершится ошибкой.
Для открытия веб-страницы Сбер ID в браузере внутри мобильного приложения Сбербанк Онлайн следует вызывать обычную ссылку, а не универсальную (см. сценарий mWeb to App).
Сценарий:
- партнер размещает внутри приложения Сбербанк Онлайн на баннер (сториз, каталог, ссылка в чате и т.д.) специальный deeplink вида
sberbankonline://sberbankid/sso?webLink=https%3A%2F%2Fpartner.ru%2F&source=banner
. - Клиент внутри мобильного приложения Сбербанк Онлайн нажимает на какой-либо баннер (сториз, каталог, ссылка в чате и т.д.).
- В результате в Safari View Controller/Google Chrome Custom Tabs вызывается сервис партнера указаный в параметре
webLink
. - Сервис партнера по входным параметрам понимает, что необходимо сформировать специальный deeplink для бесшовной авторизации клиента (подробности ниже).
- После формирования специального deeplink'а сервис партнера сразу его вызывает без необходимости каких либо действий со стороны клиента.
- Вызов обратного диплинка закроет Safari View Controller/Google Chrome Custom Tabs для клиента и авторизует его по активной сессии в приложения Сбербанк Онлайн.
- Успешно авторизовавшись, клиент вернется в Safari View Controller/Google Chrome Custom Tabs в сервис партнера вместе с
auth_code
.
Deeplink для размещения внутри приложения Сбербанк Онлайн
Для формирования deeplink'а необходимо выбрать хост, а также указать дополнительные параметры.
Хосты существуют трех видов:
sberbankonline://sberbankid/sso
— универсальный deeplink для IOS и Android;sbolonline://sberbankid/sso
- deeplink для IOS с приложением СБОЛsberbankid/sso
— если на Android возникла ошибка обработки deeplink выше, то можно попробовать использовать этот вариант для Android;android-app://ru.sberbankmobile/android-app/ru.sberbankmobile/sberbankid/sso
— если на Android возникла ошибка обработки deeplink выше, то можно попробовать использовать этот вариант для Android.
Параметры для deeplink
Название параметра | Описание |
---|---|
appLink | Диплинк на приложение партнера |
webLink | Веб-ссылка на сайт партнера |
storeLink | Веб-ссылка на магазин для установки конкретного приложения партнера |
oneLink | Веб-ссылка на ресурс, самостоятельно реализующий выбор запуска ресурса партнера (апп/веб/стор). Например, такой вариант подойдет партнерам, которые работают через механизм AppsFlyer OneLink |
Приоритеты обработки параметров на стороне Сбер ID по мере убывания
- если пришел
oneLink
, для перехода на ресурс партнера будет использован он - если параметров выше нет, а пришел
appLink
, выполняется попытка перехода в приложение партнера. Если это невозможно (например приложения партнера нет на устройства), процедура продолжается - если параметров выше нет или запуск приложения неуспешен, а пришел
webLink
, выполняется переход на сайт партнера - если параметров выше нет или запуск приложения неуспешен, а пришел
storeLink
, выполняется переход в магазин - если ничего нет, будет диалог об ошибке
Формирование deeplink для получения auth_code
После перехода по ссылке, размещенной в приложении Сбербанк Онлайн, клиент попадает в сервис партнера в Safari View Controller/Google Chrome Custom Tabs по ссылке, указаной в параметре webLink
. При этом к ссылке, указаной партнером, автоматически добавится парметр sberIDRedirect
.
sberIDRedirect
— содержит в себе хост deeplink'а.
Для формирования обратного deeplink'а и получения auth_code необходимо:
- Взять хост из параметра
sberIDRedirect
; - Добавить к нему стандартные OIDC параметры;
- Вызвать получившийся deeplink без явного участия клиента (автоматически).
Пример обратного deeplink
Пример ниже может не соответствовать реальному диплинку и нужен исключительно для примерной визуалиции процесса.
sberbankidlogin://sberbankidsso? response_type=code &scope=openid phones place_of_birth gender
&client_id=AAAABBBB-XXXX-YYYY-ZZZZ-A12A618A4C3C &state=UhdlDQS6vG4m&nonce=TGfhfBxr5ak1
&redirect_uri=https://exapmle.com/external_login