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

Через библиотеку (OAuth Device Flow)

Библиотека умеет получать OAuth-токен сама через OAuth Device Flow. Метод блокирующий — он ждёт, пока вы подтвердите вход на странице Яндекса, и возвращает объект OAuthToken с полями access_token, refresh_token, expires_in, token_type.

Important

Хранение токена — ответственность вызывающего кода. Библиотека не сохраняет токен на диск и не обновляет его по истечении expires_in. Сохраните access_token (например, в файл или переменную окружения) и передавайте его в конструктор Client / ClientAsync при следующих запусках.

from yandex_music import Client


def on_code(code):
    print(f'Откройте {code.verification_url} и введите код: {code.user_code}')


client = Client()
token = client.device_auth(on_code=on_code)

# Сохраните токен, чтобы не проходить авторизацию заново.
print(f'access_token:  {token.access_token}')
print(f'refresh_token: {token.refresh_token}')
print(f'expires_in:    {token.expires_in}')

client.init()
print(client.me.account.login)
import asyncio

from yandex_music import ClientAsync


async def main():
    def on_code(code):
        print(f'Откройте {code.verification_url} и введите код: {code.user_code}')

    client = ClientAsync()
    token = await client.device_auth(on_code=on_code)

    # Сохраните токен, чтобы не проходить авторизацию заново.
    print(f'access_token:  {token.access_token}')
    print(f'refresh_token: {token.refresh_token}')
    print(f'expires_in:    {token.expires_in}')

    await client.init()
    print(client.me.account.login)


asyncio.run(main())

Через браузер (implicit OAuth)

Если Device Flow по каким-то причинам не подходит, токен можно получить прямо из браузера — без библиотеки и без сторонних инструментов.

  1. (Опционально) Откройте DevTools во вкладке Network и включите троттлинг — страница music.yandex.ru редиректит очень быстро, и без замедления сети вы не успеете скопировать адресную строку. Инструкции: Chrome, Firefox.

  2. Откройте ссылку https://oauth.yandex.ru/authorize?response_type=token&client_id=23cabbbdc6cd418abb4b39c32c41195d.

  3. При необходимости авторизуйтесь и выдайте доступ приложению.

  4. Браузер перенаправит вас на адрес вида:

    https://music.yandex.ru/#access_token=AQAAAAYc***&token_type=bearer&expires_in=31535645
    

    Скопируйте URL до того, как сработает повторный редирект.

  5. Токен — это значение параметра access_token в URL.

Альтернативные способы

Своё OAuth-приложение создать нельзя. Если ни один из вариантов выше не подходит, используйте официальные клиенты или сторонние инструменты:

Каждый вариант выше позволяет скопировать токен. Код каждого варианта открыт.

Полезные ссылки:

Полученный токен можно передавать в конструктор классов yandex_music.Client и yandex_music.ClientAsync.