Бесшовный переход на сайт партнера
Сбер ID SDK позволяет обеспечить бесшовный переход пользователей между вашим мобильным приложением и сайтом партнера. Пользователи могут легко переключаться между сервисами, сохраняя статус аутентификации.
Получение 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 = SIDManager.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)
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()