Набор средств разработки (SDK) для iOS
Подключить SDK к проекту
и сделать настройку
Добавить кнопку
на свою view
Запустить процесс аутентификации
Обработать результат
1. Скачайте и перетащите SberbankSDK.framework в свой проект
2. Установите галочку Copy items if needed, чтобы файл фреймворка скопировался в папку проекта
3. На вкладке General в параметрах проекта добавьте SberbankSDK.framework в Embedded binaries и Linked Frameworrks and Libraries
4. SDK подключен, проект готов к сборке
1. Кнопка авторизации через Сбербанк ID имеет два предустановленных стиля
2.1 Зеленая (создается по умолчанию)
2.2 Белая с черной обводкой
3. Чтобы добавить кнопку, необходимо импортировать модуль SberbankSDK.
Objective C:
@import SberbankSDK;
Swift:
import SberbankSDK
4. Создать кнопку и добавить её на view
Objective C
SBKLoginButton *loginButton = [[SBKLoginButton alloc] initWithType:SBKLoginButtonGreen];
[loginButton addTarget:self action:@selector(loginButtonDidTap:)
      forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:loginButton];
Swift
let loginButton = SBKLoginButton(type: .white)
loginButton.addTarget(self, action: #selector(loginButtonDidTap(_:)), for: .touchUpInside)
view.addSubview(loginButton)
5. Рекомендуемые размеры кнопки можно найти в гайдах Сбербанка.
1. Для успешного запроса аутентификации необходимо создать и заполнить объект request параметрами, полученными ранее. Параметры codeChallengeи codeChallengeMethod являются необязательными. Client ID и Client Secret Вы получите в личном кабинете после заключения договора
Objective C
// Параметры для поддержки PKCE
NSString *verifier = [SBKUtils createVerifier];
NSString *challenge = [SBKUtils createChallenge:verifier];
 
SBKAuthRequest *request = [SBKAuthRequest new];
request.clientId = @"you cliend id";
request.nonce = @"you nonce";
request.scope = @"you scope";
request.state = @"you state";
request.redirectUri = @"myapp://sberidauth";
request.codeChallenge = challenge;
request.codeChallengeMethod = SBKUtilsCodeChallengeMethod;
 
// Запуска аутентификации
SBKAuthManager *authManager = [SBKAuthManager new];
[authManager authWithSberId:request];
Swift
// Параметры для поддержки PKCE
let verifier = SBKUtils.createVerifier()
let challenge = SBKUtils.createChallenge(verifier)
 
let request = SBKAuthRequest()
request.clientId = "you client id"
request.nonce = "you nonce"
request.scope = "you scope"
request.state = "you state"
request.redirectUri = "myapp://sberidauth"
request.codeChallenge = challenge
request.codeChallengeMethod = SBKUtilsCodeChallengeMethod
 
// Запуск аутентификации
let authManager = SBKAuthManager()
authManager.auth(withSberId: request)
2. Данный метод создаст уникальную ссылку и, при наличии на устройстве, откроет мобильное приложение Сбербанк Онлайн для аутентификации, в противном случае для аутентификации будет открыта web версия Сбербанк Онлайн.
1. После аутентификации Сбербанк Онлайн перенаправит вас обратно в ваше приложение по адресу, указанному в параметре redirectUri объекта request. Для того чтобы при переходе открылось ваше приложение необходимо зарегистрировать этот адрес (deeplink).
2. Откройте параметры проекта и перейдите на вкладку Info. В нижней части добавьте свой URL Type.
2. Для того чтобы ваше приложение могло проверить возможность запуска приложения Сбербанк Онлайн в Info.plist необходимо добавить следующий параметр
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>sberbankidexternallogin</string>
</array>
3. Далее в файле AppDelegate в методе
Objective C
// Для iOS 9+
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return YES; }
 
// Для iOS < 9
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return YES; }
Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return true }
3. Необходимо вызвать вспомогательный метод, который вернет объект response с полученными параметрами. Этот метод вызывается при открытии вашего приложения по специальной ссылке (deeplink).
Objective C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    if ([url.scheme isEqualToString:@"myapp"] && [url.host isEqualToString:@"sberidauth"])
    {
        [[SBKAuthManager new] getResponseFromURL:url completion:^(SBKAuthResponse *response) {
 
        }];
    }
    return YES;
}
Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {     
    if url.scheme == "myapp" && url.host == "sberidauth" {
        SBKAuthManager().getResponseFrom(url) { response in
                 
        }
    }
    return true
}
4. Обработайте параметры, полученные в ответе.