我正在使用Spotify API开发一个应用程序,但我对所有这些都有点陌生。我正在尝试使用代码交换(PKCE)的验证密钥获取授权代码(https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow-with-proof-key-for-code-exchange-pkce)
我的问题是如何将用户重定向到query
,在那里他必须接受授权,并使我的应用程序等待用户单击“接受”。当他这样做时,用户将被重定向,新的URL(正如文档所说)将包含授权代码,然后我需要将其交换为授权令牌
这是我到目前为止获取授权代码的功能:
def get_auth_code(self):
code_challenge = self.get_code_challenge_PKCE()
scopes_needed = "user-read-email%20user-read-private%20playlist-read-collaborative%20playlist-modify-public%20playlist-read-private%20playlist-modify-private%20user-library-modify%20user-library-read"
endpoint = "https://accounts.spotify.com/authorize"
query = f"{endpoint}?client_id={self.client_ID}&response_type=code&redirect_uri={self.redirect_uri}&scope={scopes_needed}&code_challenge_method=S256&code_challenge={code_challenge}"
webbrowser.open(query)
设置web服务器。
要以编程方式提取访问令牌,您需要一个web服务器在用户登录Spotify(您将其重定向到Spotify)后处理重定向。现在,这个服务器可以成为将URI粘贴到终端上输入字段的用户,但显然这对用户体验并不理想。它为许多错误留下了余地
我编写了一个SpotifyWebAPI客户机,其内部可能对您的检查很有用For example,您可以使用Flask构造服务器。主要原则是使用一个端点(即
/login
)将用户重定向(代码307
用于浏览器不会记住它)到回调(即/callback
),该回调接收code
参数,您可以使用该参数请求访问令牌我知道,在本地实现OAuth2可能有点困难。在我的库中,我还制作了一个similar function,您正在使用
webbrowser
构建它,但它确实有手动复制粘贴的怪癖。为了简洁起见,您可以定义自己使用的函数,其要点如下:相关问题 更多 >
编程相关推荐