Справочник методов
Класс 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 }