【发布时间】:2020-07-27 03:50:35
【问题描述】:
我正在构建一个 Twitch 聊天机器人,使用 Spotipy 库集成一些 Spotify 功能。
实施背后的目标是实现机器人的全自动 Spotipfy API 身份验证。
Spotify API 和 Spotipy 库 的工作原理是,首先需要一个授权令牌才能在 Spotify 端执行任何操作。这就是为什么,每当机器人最初在我的 VPS 上运行时,它都会提示我从控制台复制一个 URL,在浏览器上找到它以等待其重定向,然后将包含所需令牌的重定向 URL 粘贴到控制台上。这就是身份验证对象检索令牌数据的方式。
为了自动化这个过程,我通过 Flask 或 Django 看到了几种解决方案。
Django 实现对我很有用,因为我还在同一个 VPS 上激活了 Django 环境,除了 Django 环境在 Python 2.7 上运行,而我的 Twitch 聊天机器人在单独的 Python 3.6 环境上运行。因此,我想将它们分开,除非没有办法在不通过 Django、Flask 或任何其他网络框架监听重定向的情况下实现这种自动化。不幸的是,我的机器人只能在 Python 3.6 或更高版本上运行。
我特别好奇是否有任何内置函数或轻量级库来处理此类操作。
我用来获取 Spotify Auth 令牌的函数是:
def fetchSpotiToken():
global spotiToken, spoti
spotiToken = spotifyAuth.get_cached_token()
if not spotiToken:
spAuthURL = spotifyAuth.get_authorize_url()
print(spAuthURL)
# Prints the URL that Spotify API will redirect to
authResp = input("Enter URL")
# Console user is expected to visit the URL and submit the new redirected URL on console
respCode = spotifyAuth.parse_response_code(authResp)
spotiToken = spotifyAuth.get_access_token(respCode)
elif spotifyAuth.is_token_expired(spotifyAuth.get_cached_token()):
spotiToken = spotifyAuth.refresh_access_token(spotiToken["refresh_token"])
spoti = spotipy.Spotify(auth=spotiToken["access_token"])
return [spotiToken, spoti]
PS: 我开发 Python 才几个星期,即使做了一些研究,我也无法找到解决这个问题的方法我需要的一种方式。我不确定是否有可能以这种方式实现它。所以,如果这是不可能的,请原谅我缺乏知识。
【问题讨论】:
标签: python authentication automation spotipy