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

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

Обновлено 27 апреля 2024

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

Получение AppToken

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

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

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

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

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

let result = SIDManager.checkAppTokenIsValid()

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

Обновление AppToken

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

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

SIDManager.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 с необходимыми параметрами:

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

Удаление AppToken

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

SIDManager.deleteAppToken()

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

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

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

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

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