Python 从重定向的 Spotify 用户身份验证中获取代码

Python Get Code from redirected Spotify User Authentication

当用户批准我的应用程序从 spotify API 读取他们的数据时,尝试获取重定向 URL 产生的代码。 问题是我需要代码在用户对应用程序进行身份验证时接收包含代码的 url 。 我还没能通过 Python 做到这一点。我认为我需要通过请求来执行此操作,但我不知道 1. 知道要使用什么 2. 知道我应该在哪里寻找要使用的东西。

我目前的代码:

import spotipy
from spotipy.oauth2 import SpotifyOAuth
import os
from pathlib import Path
import requests

client_id = os.environ['']
client_secret = os.environ['']
redirect_uri = 'http://www.example.xyz/'
scope = 'user-read-recently-played user-read-currently-playing user-top-read user-read-private'
cache = Path("cache/")
username = ''

oauth = SpotifyOAuth(client_id, client_secret, redirect_uri, scope=scope, cache_path=cache/f".cache-{username}",username=username)

url = oauth.get_authorize_url()
req = requests.get(url)
red = req.url
print(red)
# code = oauth.parse_response_code(red)
# token = oauth.get_access_token(code=code,as_dict=False)

这只是我在尝试在更大的代码(一个不和谐的机器人)中实现它之前所做的测试,我所做的是在这段代码中我手动获取重定向的 url,将其粘贴到浏览器中,然后从那里对应用程序进行身份验证:该页面然后继续到重定向页面,并在末尾附加授权码。

我想知道的是如何使用 Python.

获取该授权码或以某种方式将其发送到我的脚本

您应该创建一个本地网络服务器来侦听 Spotify OAuth 回调并在那里接收令牌。

这可以使用最小的 HTTP 服务器来实现,例如 Flask

找一个任意端口来监听(让它足够独特,不要使用 8080,因为它可能与用户已经存在的服务器冲突)。

然后,在开启认证之前window,启动你的微型服务器,然后打开用户浏览器进行认证,回调URL设置为http://localhost:port/callback 或类似的东西。

然后您可以从 Flask 端点处理令牌,然后您可以使用线程或 IPC 将令牌发送回您的应用程序,或者为了更简单的实现,因为令牌可能是应用程序中的第一步,您可以让 Flask 使用获取的凭据调用脚本的主要方法。