Настройте веб-сервер.
Чтобы программно извлечь токены доступа, вам понадобится веб-сервер для обработки перенаправления после входа пользователя в Spotify (на который вы его перенаправили). Теперь этот сервер может быть пользователем, вставляющим URI в поле ввода на терминале, но, очевидно, это не идеально для взаимодействия с пользователем. Это оставляет место для множества ошибок.
Я создал клиент Spotify Web API, внутреннее устройство которого может быть полезно для вас. Например, , вы можете использовать Flask для создания сервера. Основной принцип заключается в использовании одной конечной точки (например, /login
) для перенаправления (код 307
работал у меня, браузеры не запомнили его) пользователя на обратный вызов (например, /callback
), который получает параметр code
, с которым вы можете запросить токен доступа.
OAuth2 может быть немного проблематичным для локальной реализации, я знаю. В моей библиотеке я также сделал аналогичную функцию , которую вы создаете с использованием webbrowser
, но у нее есть особенность ручного копирования и вставки. Чтобы использовать функции, вы можете определить себя для краткости, суть:
verifier = secrets.token_urlsafe(32) # for PKCE, not in my library yet
url = user_authorisation_url(scope, state, verifier)
# Communicate with the user
print('Opening browser for Spotify login...')
webbrowser.open(url)
redirected = input('Please paste redirect URL: ').strip()
code = parse_code_from_url(redirected)
state_back = parse_state_from_url(redirected)
assert state == state_back # For that added security juice
token = request_user_token(code, verifier)