SDK для iOS

Как подключить

  1. Скачайте и перенесите SberBusinessID.framework в свой проект.
  2. Установите галочку «Copy items if needed», чтобы файл фреймворка скопировался в папку проекта.
  3. На вкладке «General» в параметрах проекта добавьте SberBusinessID.framework в разделах «Embedded binaries» и «Linked Frameworks and Libraries».
  4. SDK подключен, проект готов к сборке.

Как инициализировать аутентификацию через SberBusinessID SDK

  1. Для успешного запроса аутентификации необходимо создать и заполнить объект конфигурации SberBusinessIDConfiguration. Значение параметра clientID можно получить в личном кабинете после заключения договора.
let configuration = SberBusinessIDConfiguration(clientID: "584f9xuy05",
                                                nonce: "jecc5kb0tc",
                                                scope: [.openID, .sberAdv],
                                                state: "ha6fxegld8",
                                                redirectURL: "sampleApp://path")

Все параметры являются обязательными.

Подробное описание параметров state, nonce, scope и redicrectURL можно найти в разделе Авторизация пользователя.

  1. Используйте метод authenticate объекта SberBusinessID.shared. Данный метод создаст уникальную ссылку и, при наличии на устройстве, откроет мобильное приложение Сбербанк Бизнес Онлайн для аутентификации клиента. В противном случае для аутентификации будет открыта web версия Сбербанк Бизнес Онлайн.
SberBusinessID.shared.authenticate(configuration) { [weak self] result in
    ...
}

Как получить ответ после аутентификации

  1. После аутентификации Сбербанк Бизнес Онлайн перенаправит вас обратно в ваше приложение по адресу, указанному в параметре redirectURL объекта configuration. Для того чтобы при переходе открылось ваше приложение необходимо зарегистрировать этот адрес (deeplink). Подробную инструкцию по добавлению схемы для приложения можно найти на сайте Apple Developer.
  2. Добавьте следующий код в AppDelegate:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
     
    SberBusinessID.shared.handle(openedURL: url)
     
    return true
}
 
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
     
    SberBusinessID.shared.handle(userActivity: userActivity)
     
    return true
}
  1. Для получения данных авторизации необходимо использовать объект resultModelID:
SberBusinessID.shared.authenticate(configuration) { [weak self] result in
     
    // в случае успеха вам вернется resultModelID со значениями code и nonce
    switch result {
    case .success(let resultModelID):
         
        let code = resultModelID.code
        let nonce = resultModelID.nonce
         
        self?.codeLabel.text = "code: \(code) nonce: \(nonce)"
         
    // в случае ошибки придет error, в котором будет подробно описана проблема 
    case .failure(let error):
         
        self?.showErrorAlert(with: error.localizedDescription)
    }
}

Если значение параметра state, сгенерированное вами при формировании запроса, и значение state, возвращенное SberBusinessID, не совпадут, результат будет ошибочным

  1. Для дальнейшей аутентификации необходимо передать полученные значения code и nonce на ваш бэкенд для межсерверного взаимодействия с ресурсами SberBusinessID.

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

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