Файл iOS SDK
Версия | Описание изменений | Файл | Дата |
---|---|---|---|
3.3.0 |
| iOS-sdk-v3.3.0.zip | 13.11.2023 |
Переход на актуальную версию 3.2.0
Бесшовный переход на сайт партнера
В версии SDK 3.2.0 была добавлена возможность бесшовного перехода в ЕЛК
(Единый личный кабинет) и на сайты других партнеров,
использующих SberID. Для применения данной фичи в приложении - необходимо сперва получить AppToken
, так как именно благодаря ему
и будет осуществляться переход по SSO.
Получение AppToken
Для полуения AppToken необходимо при авторизации пользователя по SberID добавить в поле scope
параметр mapp_sso
.
// Параметры для поддержки PKCE
let verifier = SIDUtils.createVerifier()
let challenge = SIDUtils.createChallenge(verifier)
let request = SIDAuthRequest()
request.nonce = "your nonce"
request.scope = "your scope mapp_sso" //Перечисление scope через пробел
request.state = "your state"
request.redirectUri = "myapp://sberidauth"
request.codeChallenge = challenge //Необязательный параметр
request.codeChallengeMethod = SIDUtilsCodeChallengeMethod //Необязательный параметр
После успешной авторизации, AppToken
будет сохранен в защищенном хранилище. Следует отметить, что AppToken будет валиден на
протяжении определенного времени. По дефолту - это 1 день, но данный параметр, связавшись с поддержкой, можно попросить изменить
под ваши нужды. Поэтому, прежде чем осуществлять бесшовный переход на партнера необходимо выполнить ряд действий:
- Проверить AppToken на валидность
- Обновить AppToken в случае если он истек
- Осуществить непосредственно переход на партнера
Проверка AppToken на валидность
Для проверки валидности следует вызвать в SDK метод checkAppTokenIsValid()
// Результат выполнения проверки токена на валидность
let result = SIDManager.checkAppTokenIsValid()
switch result {
// В случае если токен был получен, вырентся успешный ответ типа Bool
case .success(let isValid):
if isValid {
// Если токен валиден, то в данном случае его обновление не требуется и пункт обновления AppToken можно пропустить
} else {
// Если токен НЕ валиден - следует его обновить
}
case .failure(let error):
// Если приходит ошибка, то ее можно обработать, ориентируясь на тип ошибки.
}
Обновление AppToken
Обновление токена происходит через вызов метода refreshAppToken(request: SIDAppTokenRequest,
completion: @escaping (Result<SIDAppTokenResponse, SIDError>) -> Void), в аргументы которого передается сформированная модель с
OIDC
параметрами и обработчик ответа в виде completion
. Токена будет автоматичски перезаписан в случа успешного запроса.
// Параметры для поддержки PKCE
// Параметры для поддержки PKCE
let verifier = SIDUtils.createVerifier()
let challenge = SIDUtils.createChallenge(verifier)
let request = SIDAppTokenRequest()
request.nonce = "your nonce"
request.scope = "your scope mapp_sso" //Перечисление scope через пробел
request.state = "your state"
request.redirectUri = "myapp://sberidauth"
request.codeChallenge = challenge //Необязательный параметр
request.codeChallengeMethod = SIDUtilsCodeChallengeMethod //Необязательный параметр
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 на новый пришедший
case .failure(let error):
// Если приходит ошибка, то ее можно обработать, ориентируясь на тип ошибки.
}
}
Переход на сайт партнера
Для пользования данной фичей в полной мере, необходимо иметь 4 параметра:
- partnerWebLink: ссылка на сайт партнера (Обязательный)
- partnerClientId: уникальный идентификор партнера, использующего SberID. (Обязательный для SSO)
- partnerColor: предпочтительный цвет для лоадера и
SafariViewController
(Необязательный) - openIn: тип контроллера для открытия страницы партнера (Необязательный)
Для вызова перехода нужно использовать метод goToPartnerSSO(partnerWebLink: String, partnerClientId: String?, partnerColor: UIColor?, openIn: SIDOpenInType?) -> SIDError?. В случае успешного сценария работы сайт партнера будет открыт бесшовно, в ином случае сайт откроется без SSO.
Аргумент SIDOpenInType
можно задать через предложенные варианты enum, либо через rawValue в нижнем регистре ("webview"). Для данной функции следует обрабатывать лишь один тип ошибки - linkIsNotValid. Эта ошибка означает что вы передали невалидный partnerWebLink. Ошибки других типов - обрабатывайте на свое усмотрение.
let partnerWebLink: String = "https://partner.ru"
let partnerClientId: String? = "partherClientId"
let partnerColor: UIColor? = .red
var openIn: SIDOpenInType? = SIDOpenInType(rawValue: "webview")
if let error = SIDManager.goToPartnerSSO(partnerWebLink: partnerWebLink,
partnerClientId: partnerClientId,
partnerColor: partnerColor,
openIn: openIn) {
// Если приходит ошибка, то ее можно обработать, ориентируясь на тип ошибки.
} else {
// Открылось webView с сайтом партнера
}
Удаление AppToken
В случае если пользователь выходит из аккаунта - необходмо удалить AppToken
, вызвав метод deleteAppToken()
.
SIDManager.deleteAppToken()
Типы ошибок и их обработка
SIDError - класс отвечающий за все возможные ошибки при работе с SDK. Класс содержит в себе две переменные:
- type: Тип ошибки. При построении лоигики обработки ошибок, ориентир необходимо станвить на него
- message: Текст ошибки, детально рассказывающий о проблеме.
В данной таблице представлены все вариации типа SIDError и инструкция по их обработке.
О версии 3.0.0
Новое название класса SIDManager
Наш класс SIDAuthManager
стал выполнять больше функций, чем просто Auth, по-этому, соблюдая правила чистого кода, переимновали класс в SIDManager
Инициализация SDK в методе AppDelegate
При старте вашего мобильного приложения необходмо инициализировать SDK в методе AppDelegate и установить значение Client ID:
import SberIdSDK
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
SIDManager.initSberID(clientId: "clientId")
...
return true
}
О версии 2.4.4
Передача номера на OIDC страницу
Добавлена возмость отправки номера телефона на OIDC страницу через новый параметр login_hint
во время запуска авторизации.
- Swift
- Objective C
let request = SBKAuthRequest()
request.nonce = "your nonce"
... //другие параметры
request.loginHint = "79998887766" // параметр для передачи номера телефона пользователя
... //другие параметры
SBKAuthRequest *request = [SBKAuthRequest new];
request.nonce = @"your nonce";
... //другие параметры
request.loginHint = @"79998887766";
... //другие параметры
О версии 2.4.0
Что нового в версии SDK 2.4.0 и на что обратить внимание - рассказываем ниже!
Шторка выбора мобильного приложения Сбербанка
С версии 2.4.0 добавлена шторка, всплывающая снизу со списком мобильных приложений Сбербанка. Она появляется только в случае, когда у пользователя установлено больше одного приложения (Например: СБОЛ и Сбербанк онлайн)
Поддержка тестовых стендов
Начиная с версии 2.4.0 для внутренних партнеров мы добавили возможность смены стендов на ИФТ и ПСИ. Для работы с переключением у вас должна быть настроена интеграция с тестовыми стендами. Для добавления на стенд можно написать в чат поддержки Сбер ID (Ваш_продукт & Сбер ID) или на почту SberId@sber.ru
Для настройки стенда нужно установить standType в SBKAuthRequest.
Возможные варианты enum: prom
, ift
, psi
, iftCloud
, psiCloud
, custom
.
О версии 2.3.1
С версии 2.3.0 мы временно отключили MPAnalytics, если у вас она прежде была установлена, удалите MPAnalytics.xcframework и файл Media.bundle. Проверьте, что в Frameworks, Libraries, and Embedded Content больше не подключена MPAnalytics и в Build phases/CompileSources нет файла MPAnalyticsDataModel.xcdatamodeld.