При реализации Аутентификация через OIDC страницу по документации для Android и IOS и используя SDK версии 2.0.0 и ниже, возможна ошибка завершения сценария.
Кейс
- Пользователь в мобильном приложении партнера нажимает войти по Сбер ID
- Открывается OIDC страница во встроенном в приложение браузере
- Пользователь выбирает вход через приложение СБОЛ
- В СБОЛе пользователь успешно подтвержает вход
- Пользователя перебрасывает во внешний браузер смартфона
- Аутентификация провалена
Причина
Сценарий входа через МП СБОЛ на OIDC странице начинается во встроенном в приложение браузере (Chrome Custom Tab или Safari View Controller), но после редиректа пользователя направляет во внешний браузер т.е. сценариций заканчивается в другом браузере или сценарий был запущен в браузере в режиме инкогнито.
Рекомендация
Вариант 1. Если используете SDK
После обновления Android SDK и IOS SDK до версии 2.2 и выше. Требуемые парметры authApp
и app_redirect_uri
будут передаваться автоматически, решив возникшую проблему.
Вариант 2. Если интегрированы по API
Перед запуском инициализации OIDC страницы необходимо проверить наличие мобильного приложения СБОЛ на устройстве или его отсутсвие
Android
// Проверка что МП СБОЛ не установлен на устройстве
fun checkSbolIsNotInstalled(context: Context): Boolean{
val deeplinkUri = Uri.Builder()
.scheme("sberbankidlogin")
.authority("sberbankid").build()
return context.packageManager
.queryIntentActivities(Intent( Intent.ACTION_VIEW, deeplinkUri), 0)
.isEmpty()
}