ym88659208ym87991671
Бесшовный переход на сайт партнера | Документация для разработчиков

Бесшовный переход на сайт партнера

Обновлено 10 октября 2025

Сбер ID SDK позволяет обеспечить бесшовный переход пользователей между вашим мобильным приложением и сайтом партнера. Пользователи могут легко переключаться между сервисами, сохраняя статус аутентификации.

Настройка AppToken

Чтобы AppToken заработал нужно провести ряд настроек в проекте:

  1. Добавить в Keychain Sharing новую Keychain Group с параметром "ru.sid.iphone.shared"
  2. Добавить в info.plist настройку параметра AppIdentifierPrefix
    	<key>AppIdentifierPrefix</key>
    <string>$(AppIdentifierPrefix)</string>
  3. Проверить добавились ли новые entitlements в проект
  4. Удалить и установить заново приложение на симулятор

Получение AppToken

AppToken — это специальный токен, необходимый для авторизации пользователя. Для его получения добавьте в запрос на авторизацию дополнительный параметр mapp_sso.

let verifier = SIDUtils.createVerifier()
let challenge = SIDUtils.createChallenge(verifier)
let challengeMethod = SIDAuthRequest.challengeMethod

let request = SIDAuthRequest(scope: "openid profile email mapp_sso",
state: "random_state",
nonce: "random_nonce",
redirectUri: "myapp://callback",
codeChallenge: challenge,
codeChallengeMethod: challengeMethod)

После успешной авторизации, мы сохраним токен в защищенном хранилище и он будет валиден на протяжении определенного времени. По умолчанию — один день. Если хотите изменить время, в течение которого токен должен быть валиден, обратитесь в поддержку.

Проверка AppToken на валидность

Перед переходом проверьте валидность AppToken и обновите его при необходимости.

let result =  SID.login.checkAppTokenIsValid()

switch result {
case .success(let isValid):
if isValid {
// Токен валиден, можно осуществлять переход
} else {
// Токен невалиден - следует его обновить
}
case .failure(let error):
// Получена ошибка, следует обработать ее опираясь на код ошибки
}

Обновление AppToken

При провале проверки на валидность токена, обновите его. Новый токен будет автоматически перезаписан в случае успешного запроса.

let verifier = SIDUtils.createVerifier()
let challenge = SIDUtils.createChallenge(verifier)
let challengeMethod = SIDAuthRequest.challengeMethod

let request = SIDAuthRequest(scope: "openid profile email mapp_sso",
state: "random_state",
nonce: "random_nonce",
redirectUri: "myapp://callback",
codeChallenge: challenge,
codeChallengeMethod: challengeMethod)

SID.login.refreshAppToken(request: request) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let response):
guard let authCode = response.authCode,
let state = response.state else { return }
// При успешном ответе требуется перезаписать authCode, AppToken мы сохраним для вас сами
case .failure(let error):
// Получена ошибка, следует обработать ее опираясь на код ошибки
}
}

Переход на сайт партнера

Для бесшовного перехода на ресурс партнера используйте метод goToPartnerSSO с необходимыми параметрами:

class YourViewController: UIViewController, SIDWebViewDelegateProtocol {

func goToPartnerSSO() {
/// Открывает сайт партнера
/// - Parameters:
/// - partnerWebLink: Ссылка на сайт партнера
/// - partnerClientId: Уникальный идентификатор партнера, использующего Сбер ID
/// - partnerColor: Предпочитаемый цвет для UI элементов при переходе
/// - openIn: Тип контроллера для открытия страницы партнера `SIDOpenInType.webView` или `SIDOpenInType.browser`.
/// - delegate: Обработчик событий webview
/// - Returns: Ошибка
if let error = SID.login.goToPartnerSSO(partnerWebLink: "https://partner.ru",
partnerClientId: "partnerClientId",
partnerColor: .red,
openIn: SIDOpenInType.webView,
delegate: self) {
// Если приходит ошибка, то ее можно обработать, ориентируясь на тип ошибки.
} else {
// Открылось webView с сайтом партнера
}
}

func webViewReject() {
// Обработка закрытия webView
}
}

Удаление AppToken

При выходе пользователя из системы не забудьте удалить AppToken.

SID.login.deleteAppToken()

Типы ошибок и их обработка

SIDError - объект отвечающий за все возможные ошибки при работе с SDK. Он содержит в себе:

  • type - Тип ошибки. При построении логики обработки ошибок, ориентируйтесь прежде всего на него;
  • message - Текст детального описания ошибки.

В данной таблице представлены все вариации типа SIDError и инструкция по их обработке.

Тип ошибкиЗначениеОбработка
serviceNotAvailableСервис временно не доступенПродолжить работу приложения в обычном режиме
serviceErrorОшибка работы сервераПродолжить работу приложения в обычном режиме
requiredReloginЧасть функционала ограничена, для снятия ограничений - рекомендуется перелогинить пользователяРазлогинить пользователя или продолжить работу с частичным функционалом
linkIsNotValidНевалидная ссылкаПроверить ссылку
unknownНеизвестная ошибкаПродолжить работу приложения в обычном режиме
clientIdNotFoundClientId не найденПередать через настройки clientId и попробовать снова или продолжить работу приложения в обычном режиме

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.