提问人:christian fasole 提问时间:11/13/2023 最后编辑:Brian Tompsett - 汤莱恩christian fasole 更新时间:11/17/2023 访问量:140
在使用它的 flask 的 Spotify API 上出现无访问令牌错误
Getting a no access token error on the Spotify API using it flask
问:
这是错误代码 https://api.spotify.com/v1/me/top/tracks?time_range=short_term&limit=10&offset=0:
无,原因:无
这是问题来源的代码:
@app.route('/top-songs')
def top_songs():
token_info = get_token()
if not token_info:
return "Not work"
print("Access Token:", token_info['access_token'])
access_token = token_info['access_token']
sp = spotipy.Spotify(auth=access_token)
try:
top_tracks = sp.current_user_top_tracks(limit=10, offset=0, time_range='short_term')['items']
except spotipy.SpotifyException as e:
print("Spotify API Error:", e)
# Extract relevant information from top_tracks
# Example: track_names = [track['name'] for track in top_tracks['items']]
return render_template('index.html')
我正在尝试从 Spotify API 打印热门歌曲并将其显示在 HTML 文件上。错误似乎出现在行中:
top_tracks = sp.current_user_top_tracks(limit=10, offset=0, time_range='short_term')['items']
因为如果删除它,我不会收到错误。有人知道吗?
答:
0赞
0x00
11/17/2023
#1
您收到 HTTP 状态代码 403 Forbidden(服务器理解请求,但拒绝授权。
如果你查看 Spotify 有关授权的 Web API 文档,您将看到下表,该表显示,如果您使用的是客户端凭据 (access_token),则您无权访问用户资源,在这种情况下,您正在尝试访问这些资源,这就是 API 引发异常并显示 HTTP 状态代码 403 的原因。spotipy.Spotify.current_user_top_tracks()
要访问用户资源,您需要使用 spotipy 文档中所述的授权代码进行身份验证。在这种情况下,您需要范围:user-top-read
import spotipy
from spotipy.oauth2 import SpotifyOAuth
# You also need CLIENT_ID and CLIENT_SECRET to create the Spotify client
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope="user-top-read"))
top_tracks = sp.current_user_top_tracks()["items"]
print(top_tracks)
评论
0赞
christian fasole
11/18/2023
我有一个函数可以创建 oAuth,该函数返回 SpotifyOauth 以及它需要的所有东西,例如客户端 ID、客户端密钥、范围和重定向。我试图在我用来返回用户顶级艺术家的函数中重新定义它,但由于重定向 URL,它告诉我我已经定义了它。我试过了,但后来我收到错误“仅支持有效的持有者身份验证,原因:无”不知道我哪里出了问题。我真的希望有人能帮忙。token_info = create_spotify_oauth().get_cached_token() sp = spotipy.Spotify(auth=token_info)
0赞
0x00
11/18/2023
@christianfasole,您正在创建一个 spotify 客户端对象,其参数仅用于传递访问令牌。正如我所解释的,只有使用访问令牌,您将无法访问用户信息。您可以尝试我上面所做的,即创建一个或阅读有关缓存处理的文档,该文档确实具有 FlaskSession 处理程序auth=
auth_manager=
0赞
christian fasole
11/18/2023
使用您上面的内容,我收到一个错误,说我没有客户端 ID 或客户端密码,所以我尝试将两者放入代码中,但后来它想要重定向,但我无处可重新路由它。
0赞
0x00
11/18/2023
SpotifyOAuth 可以采用重定向 URL,只需是任何有效的 URL,无论哪个,您都可以使用 localhost,但它必须与您在 Spotify 仪表板中的内容匹配。下面是一个示例(client_id=None, client_secret=None, redirect_uri=None, ...)
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id="JD28DJ2DASA",client_secret="JN239DNAK2",redirect_uri="http://localhost",scope="user-top-read"))
0赞
christian fasole
11/18/2023
当我将它与我的 Spotify 仪表板中的那个匹配时,我收到此错误“OSError:[Errno 48] 地址已在使用中”
评论
access_token