Сбер ID
Документация

iOS SDK

iOS SDK помогает реализовать получение Auth Code.
Чтобы добавить Сбер ID в свое приложение, следуйте инструкциям ниже.

Для того чтобы воспользоваться SberbankSDK необходимо:

  1. Подключить SDK к проекту и сделать настройку
  2. Добавить кнопку на свою view
  3. Запустить процесс аутентификации
  4. Обработать результат

Подключение

Предварительно: разместить файлы SberbankSDK.framework

  • Перетащите SberbankSDK.framework и MPAnalytics.framework в свой проект в Frameworks, Libraries, and Embedded Content

  • MPAnalyticsDataModel.xcdatamodeld предоставляется в исходном виде. Проекту необходимо скомпилировать этот файл. Для этого необходимо прилинковать его в приложение.

Внимание

ВАЖНО!

В меню добавления файла в проект необходимо убрать галочку Copy items if needed

  • На вкладке General проекта в параметрах Frameworks, Libraries, and Embedded Content необходимо выставить:
    • SberbankSDK.xcframework как Embed & Sign
    • MPAnalytics.framework как Do Not Embed

  • На вкладке Build Phases, в параметрах Frameworks, Libraries, and Embedded Content(Embedded frameworks) проверяем что добавлен только SberbankSDK.xcframework

SDK подключен, проект готов к сборке.

Добавление кнопки

Чтобы добавить кнопку, необходимо импортировать модуль SberbankSDK.

Swift

import SberbankSDK

Objective C

@import SberbankSDK;

Создать кнопку и добавить её на view

Swift

/// Инициализатор создаст кнопку по стилистическому гайду Сбербанка с принятием во внимание желаемых размеров*
/// - Parameters:
/// - type: стиль кнопки**
/// - textType: вариант текста***
/// - desiredHeight: желаемая высота кнопки
/// - desiredWidth: желаемая ширина кнопки
init(type: LoginButtonStyle,
textType: LoginButtonTextType,
desiredHeight: CGFloat,
desiredWidth: CGFloat)

или

/// Инициализатор создаст кнопку согласно выбранному стилю** с текстом "Войти по Сбер ID" c параметрами по умолчанию
/// - Parameter type: стиль кнопки
init(type: LoginButtonStyle)
 
loginButton.addTarget(self, action: #selector(loginButtonDidTap(_:)), for: .touchUpInside)
view.addSubview(loginButton)

Objective C

/// Инициализатор создаст кнопку по стилистическому гайду Сбербанка с принятием во внимание желаемых размеров*
/// params:
/// type стиль кнопки**
/// textType вариант текста***
/// desiredHeight желаемая высота кнопки
/// desiredWidth желаемая ширина кнопки
- (nonnull instancetype)initWithType:(enum LoginButtonStyle)type
textType:(enum LoginButtonTextType)textType
desiredHeight:(CGFloat)desiredHeight
desiredWidth:(CGFloat)desiredWidth;
example:
SBKLoginButton *loginButton = [[SBKLoginButton alloc] initWithType:LoginButtonStyleGreen textType:LoginButtonTextTypeGeneral desiredHeight:50 desiredWidth:100];

или

/// Инициализатор создаст кнопку согласно выбранному стилю** с текстом "Войти по Сбер ID" c параметрами по умолчанию
/// type стиль кнопки
- (nonnull instancetype)initWithType:(enum LoginButtonStyle)type;
 
example:
SBKLoginButton *loginButton = [[SBKLoginButton alloc] initWithType:LoginButtonStyleGreen];
[loginButton addTarget:self action:@selector(loginButtonDidTap:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:loginButton];

* Рекомендуемые размеры кнопки можно найти в гайдах Сбербанка.

** Доступные стили кнопки: green и white

*** Доступные варианты текста:

  • LoginButtonTextType.short => "Сбер ID"
  • LoginButtonTextType.general => "Войти по Сбер ID"
  • LoginButtonTextType.filling => "Заполнить со Сбер ID"
  • LoginButtonTextType.pursue => "Продолжить со Сбер ID"

Запуск процесса аутентификации по Сбер ID

Для успешного запроса аутентификации необходимо создать и заполнить объект request параметрами, полученными ранее.

Описание параметров запроса можно найти здесь.

Swift

// Параметры для поддержки PKCE
let verifier = SBKUtils.createVerifier()
let challenge = SBKUtils.createChallenge(verifier)
 
let request = SBKAuthRequest()
request.clientId = "your client id"
request.nonce = "your nonce"
request.scope = "your scope" //Перечесление scope через пробел
request.state = "your state"
request.redirectUri = "myapp://sberidauth"
request.codeChallenge = challenge //Необязательный параметр
request.codeChallengeMethod = SBKAuthRequest.challengeMethod //Необязательный параметр
 
// Запуск аутентификации
SBKAuthManager.auth(withSberId: request)

Objective C

// Параметры для поддержки PKCE
NSString *verifier = [SBKUtils createVerifier];
NSString *challenge = [SBKUtils createChallenge:verifier];
 
SBKAuthRequest *request = [SBKAuthRequest new];
request.clientId = @"your cliend id";
request.nonce = @"your nonce";
request.scope = @"your scope"; //Перечесление scope через пробел
request.state = @"your state";
request.redirectUri = @"myapp://sberidauth";
request.codeChallenge = challenge; //Необязательный параметр
request.codeChallengeMethod = SBKAuthRequest.challengeMethod; //Необязательный параметр
 
// Запуск аутентификации
[SBKAuthManager authWithSberId:request];

Данный метод создаст уникальную ссылку и, при наличии на устройстве, откроет мобильное приложение Сбербанк Онлайн для аутентификации.

Для поддержки случая когда приложения Сбербанк Онлайн не может быть запущено( UIApplication.shared.canOpenURL для URI приложения Сбербанк Онлайн возвращает false )

необходимо передать в свойство SBKAuthManager. navigationController объект типа UINavigationController , через который будет открыт SafariViewController c web страницей входа по Сбер ID.

* в версиях до 1.3.1 открывается внешний браузер Safari - на данный момент это запрещено Apple.

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

После аутентификации Сбербанк Онлайн перенаправит вас обратно в ваше приложение по адресу, указанному в параметре redirectUri объекта request. Для того чтобы при переходе открылось ваше приложение необходимо зарегистрировать этот адрес (deeplink).

  • Откройте параметры проекта и перейдите на вкладку Info. В нижней части добавьте свой URL Type.