Справочник методов

Класс YandexLoginSDK

Основной класс, через который идёт всё взаимодействие с SDK. Класс является реализацией паттерна Одиночка, единственный его экземпляр — это статическая переменная shared.

Для начала авторизации используется метод authorize(with:customValues:authorizationStrategy:). В него необходимо передать родительский View Controller.

Чтобы получить результат авторизации, нужно подписаться наблюдателем LoginSDK через метод add(observer:). Если получать уведомления от LoginSDK больше не нужно, от них можно отписаться через метод remove(observer:).

Если необходимо удалить сохранённые токены или провести повторную авторизацию пользователя, используется метод logout().

Статические переменные

  • Единственный экземпляр класса YandexLoginSDK:

    static var shared: YandexLoginSDK { get }
    

    Получать значения переменных и вызывать методы нужно именно со статической переменной shared.

  • Текущая версия LoginSDK:

    static var version: String { get }
    

    Соответствует формату семантического версионирования (SemVer).

Методы

  • Активация LoginSDK:

    func activate(with: String, authorizationStrategy: AuthorizationStrategy) throws
    

    Методу необходимо передать Client ID и желаемую стратегию авторизации authorizationStrategy (значение по умолчанию .default). Перед активацией метод провалидирует конфигурацию приложения. Если валидация завершится неудачно, вызов метода закончится ошибкой.

  • Получение токена:

    func handleUserActivity(NSUserActivity) throws
    

    Метод обрабатывает аргумент NSUserActivity, пытается получить из него URL, который был передан приложению, а из него получить токены. В случае успеха у наблюдателей вызывается метод didFinishLogin(with:) с аргументом .success и ассоциированным значением типа LoginResult.

  • Обертка метода handleUserActivity(_:):

    func tryHandleUserActivity(NSUserActivity) –> Bool
    

    Выполнение метода handleUserActivity(_:) может заканчиваться ошибкой, в то время как tryHandleUserActivity(_:) вызывает его в конструкции do-catch и возвращает false, если при выполнении возникла ошибка.

  • Получение кода авторизации:

    func handleOpenURL(URL) throws
    

    Метод обрабатывает переданный URL и пытается получить из него код авторизации, затем по полученному коду запрашивает токены. Если всё проходит успешно, у наблюдателей вызывается метод didFinishLogin(with:) с аргументом .success и ассоциированным значением типа LoginResult.

  • Обертка метода handleOpenURL(_:):

    func tryHandleOpenURL(URL) –> Bool
    

    Выполнение метода handleOpenURL(_:) может заканчиваться ошибкой, в то время как tryHandleOpenURL(_:) вызывает его в конструкции do-catch и возвращает false, если при выполнении возникла ошибка.

  • Проверка URL:

    func isURLRelatedToSDK(URL) –> Bool
    

    Метод проверяет, относится ли переданный URL к LoginSDK.

  • Добавление в список наблюдателей:

    func add(observer: any LoginSDKObserver)
    

    Метод добавляет переданный ему объект в список наблюдателей LoginSDK. Наблюдатель будет получать уведомления обо всех результатах работы SDK: об успешных авторизациях и о получении ошибок.

  • Удаление из списка наблюдателей:

    func remove(observer: any LoginSDKObserver)
    

    Метод убирает переданный ему объект из списка наблюдателей LoginSDK.

  • Запуск процесса авторизации:

    func authorize(with: UIViewController, customValues: [String: String]?, authorizationStrategy: AuthorizationStrategy) throws
    

    Параметр parentViewController является обязательным, даже если выбрана стратегия авторизации через приложения Яндекса, так как на устройстве пользователей этих приложений может не быть и тогда SDK перейдёт к авторизации через веб. Параметр customValues имеет значение по умолчанию nil.

  • Удаление токенов из хранилища:

    func logout() throws
    

    Метод может использоваться, если необходима повторная авторизация.

Перечисление YandexLoginSDK.AuthorizationStrategy

Перечисление (enum), определяющее стратегию авторизации пользователя в LoginSDK. В зависимости от установленного в YandexLoginSDK значения свойства authorizationStrategy LoginSDK будет определять, авторизовывать ли пользователя через приложения Яндекса или через веб.

Значения

  • Стратегия по умолчанию:

    case default
    

    Если выбрана эта стратегия, LoginSDK попытается открыть приложение Яндекса, поддерживающее авторизацию, и авторизовать пользователя в нём. Если таких приложений нет, LoginSDK попробует авторизовать пользователя через веб.

  • Стратегия авторизации через веб:

    case webOnly
    

    Если необходимо авторизовать пользователя в веб, укажите это при активации приложения в методе activate(with:authorizationStrategy:) экземпляра класса YandexLoginSDK. В этом случае активатор не будет требовать от приложения наличия схем для перехода в приложения Яндекса в Info.plist.

Структура LoginResult

Структура LoginResult хранит в себе токены, полученные в результате авторизации. Экземпляр этой структуры передаётся наблюдателям LoginSDK в случае успешной авторизации в методе didFinishLogin(with:).

Переменные

  • OAuth-токен:

    var token: String { get }
    

    Используется в запросах к API сервисов Яндекса.

  • JSON Web Token:

    var jwt: String { get }
    

    Подробнее о JSON Web Token.

  • Представление структуры в виде словаря:

    var asDictionary: [String: String] { get }
    

    Ключами и значениями словаря являются строки. Ключом для OAuth-токена является строка “token“, для JSON Web Token — “jwt“.

  • Представление структуры в виде строки:

    var asString: String { get }
    

Протокол LoginSDKObserver

Протокол LoginSDKObserver используется LoginSDK для уведомления наблюдателей о завершении авторизации. Реализовать протокол могут только классы.

Для подписки на изменение используется метод addObserver(_:) класса YandexLoginSDK.

Для отписки от изменений используется метод removeObserver(_:) класса YandexLoginSDK.

Методы

  • Завершение авторизации:

    func didFinishLogin(with: Result<LoginResult, any Error>)
    

    Метод вызывается в двух случаях:

    • LoginSDK успешно завершил авторизацию, получил OAuth-токен и JSON Web Token.
    • LoginSDK столкнулся с ошибкой во время выполнения авторизации.

    Случай неудачной авторизации будет иметь в качестве связанного значения ошибку с типом, соответствующим протоколу Error. В частности, эта ошибка может соответствовать протоколу YandexLoginSDKError.

Протокол YandexLoginSDKError

Протокол YandexLoginSDKError объединяет все ошибки, которые генерирует LoginSDK. Для любой такой ошибки можно получить строковое описание через переменную message.

Переменные

  • Подробная информация об ошибке в виде строки:

    var message: String { get }
    
Предыдущая
Следующая