Spotify API получает код авторизации от redirect_uri - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь получить авторизацию для своего приложения и учетной записи Spotify.Не нужно, чтобы функция работала внутри приложения для каждого пользователя.Потому что еще нет приложения.Просто хочу сначала попробовать кое-что.И теперь я знаю о спотипах, наверное, мне следует использовать библиотеку.Сначала я пытался просто вставить ссылки в браузере, следуя инструкциям ниже.Первый шаг работает отлично.Но когда я пытаюсь обменяться кодом авторизации с токеном, я всегда получаю сообщение об ошибке.Я думаю, что у кода авторизации очень короткий срок жизни, и всегда слишком поздно, когда я вставляю код аутентификации в новую ссылку.

Итак, вопрос: могу ли я каким-то образом получить код, которыйпоявляется в redirect_uri после выполнения запроса GET, а затем передает его в качестве одного из параметров в запрос POST.

Руководство от spotify - https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorizaton-code-flow

import requests
import config
import secrets
import string


URL_AUTH = 'https://accounts.spotify.com/authorize'
URL_TOKEN = 'https://accounts.spotify.com/api/token'
symbols = string.ascii_lowercase + string.digits
STATE = ''.join(secrets.choice(symbols) for _ in range(12))

params_auth = {
                'client_id': config.CLIENT_ID,
                'response_type': 'code',
                'redirect_uri': 'https://example.com/callback',
                'scope': 'user-read-currently-playing',
                'state': STATE
}

data_token = {
                'grant_type': "authorization_code",
                # how can I get the auth code 'code': auth_code,
                'redirect_uri': 'https://example.com/callback',
                'client_id': config.CLIENT_ID,
                'client_secret': config.CLIENT_SECRET
}

app_auth = requests.get(url=URL_AUTH, params=params_auth)

access_token = requests.post(url=URL_TOKEN, data=data_token)

1 Ответ

0 голосов
/ 10 декабря 2018

https://accounts.spotify.com/authorize не является адресом, к которому ваша программа предназначена для запроса.Вы должны открыть эту страницу в веб-браузере, чтобы ваш пользователь мог войти в систему и предоставить вашему приложению разрешение на выполнение действий от его имени.Когда пользователь завершит работу и примет или отклонит запрос вашего приложения на разрешение, он будет перенаправлен на URL-адрес перенаправления, где вы получите код авторизации, который вы можете обменять на токен авторизации и токен обновления, как и вы.во втором запросе.

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

Spotipy имеет методы, встроенные для этих потоков аутентификации, поэтому вам может оказаться проще использовать библиотеку.

...