【问题标题】:Python Get Code from redirected Spotify User AuthenticationPython 从重定向的 Spotify 用户身份验证中获取代码
【发布时间】:2020-11-14 17:45:01
【问题描述】:

当用户批准我的应用程序从 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 以某种方式获取该授权代码或将其发送到我的脚本。

【问题讨论】:

    标签: python python-requests spotify spotipy


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的回复,非常感谢,我一定会调查的。我实际上已经购买了一个域,是否可以让网络服务器使用我自己的面向公众的域来监听 Spotify OAuth 回调 - 希望将来附加一个网站,所以我现在购买了它并将其用作代码中的 URL 重定向。
    • 是的,你可以,但是你的网络服务器必须完成所有的逻辑并被添加到 OAuth 授权的回调域中
    • 哦,顺便说一句,是否有任何代码示例可以与我分享,可以给我一个如何完成的示例?我上网查了一下,一直没找到。
    猜你喜欢
    • 2023-03-17
    • 2014-03-28
    • 2020-02-17
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2021-04-14
    相关资源
    最近更新 更多