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