OAuth Device Flow
- class yandex_music._client_async.device_auth.DeviceAuthMixin
OAuth Device Flow.
Миксин для получения OAuth-токена Яндекса без сторонних инструментов.
- async request_device_code(device_id=None, device_name=None, client_id=None)
Запрос кода устройства для OAuth Device Flow.
- Parameters:
device_id (
str, optional) – Идентификатор устройства. По умолчанию — случайная строка из 10 символов.device_name (
str, optional) – Человекочитаемое имя устройства. По умолчанию —YandexMusicAPI.client_id (
str, optional) – OAuth client_id. По умолчанию — встроенный client_id Android-приложения Яндекс.Музыки.
- Returns:
Код устройства.
- Return type:
- Raises:
yandex_music.exceptions.DeviceAuthError – При некорректном ответе сервера.
yandex_music.exceptions.YandexMusicError – Базовое исключение библиотеки.
- async poll_device_token(device_code, client_id=None, client_secret=None)
Однократный опрос статуса подтверждения кода устройства.
Note
Если пользователь ещё не подтвердил вход, возвращает
None(OAuth ошибкаauthorization_pending). Для остальных ошибок OAuth (expired_token,access_denied,invalid_clientи т.д.) бросаетyandex_music.exceptions.DeviceAuthError.- Parameters:
device_code (
str) – Значениеdevice_codeизrequest_device_code().client_id (
str, optional) – OAuth client_id.client_secret (
str, optional) – OAuth client_secret.
- Returns:
- OAuth-токен или
None, если пользователь ещё не подтвердил вход.
- OAuth-токен или
- Return type:
yandex_music.OAuthToken|None- Raises:
yandex_music.exceptions.DeviceAuthError – Ошибка OAuth (кроме pending).
yandex_music.exceptions.YandexMusicError – Базовое исключение библиотеки.
- async device_auth(on_code, poll_interval=None, timeout=None, should_cancel=None, device_id=None, device_name=None, client_id=None, client_secret=None)
Блокирующий OAuth Device Flow: получает код, ждёт подтверждения, возвращает токен.
Note
Метод блокирующий. Выполнение возвращается только после того, как пользователь подтвердит вход на странице Яндекса, истечёт таймаут или
should_cancel()вернётTrue.После успешного получения токена метод записывает его в
self.tokenи обновляет заголовокAuthorizationу текущего HTTP-клиента, поэтому клиент сразу готов к работе.- Parameters:
on_code (
Callable) – Обязательный коллбек. Вызывается сразу после полученияyandex_music.DeviceCode— чтобы вызывающий код мог показать пользователюuser_codeиverification_url. В асинхронном клиенте допустимо передать корутину.poll_interval (
float, optional) – Интервал опроса токена в секундах. По умолчанию —code.interval, рекомендованный сервером.timeout (
float, optional) – Общий таймаут ожидания в секундах. По умолчанию —code.expires_in, возвращённый сервером.should_cancel (
Callable, optional) – Коллбек без аргументов, проверяемый на каждой итерации. Если вернётTrue, метод броситyandex_music.exceptions.DeviceAuthError.device_id (
str, optional) – См.request_device_code().device_name (
str, optional) – См.request_device_code().client_id (
str, optional) – OAuth client_id.client_secret (
str, optional) – OAuth client_secret.
- Returns:
Полученный OAuth-токен.
- Return type:
- Raises:
yandex_music.exceptions.DeviceAuthError – При таймауте, отмене через
should_cancelили не-pending ошибке OAuth.