获取他人Spotify账号热门艺人遇INVALID_CLIENT错误的正确步骤
获取他人Spotify热门艺人列表的正确步骤(解决INVALID_CLIENT错误)
核心问题说明
你要获取非本人Spotify账号的热门艺人数据,当前代码使用的util.prompt_for_user_token配合指定USERNAME的方式不适用该场景,同时redirect URI的配置细节也可能存在疏漏。
正确操作步骤
1. 确认Redirect URI配置完全匹配
- 代码中的
REDIRECT_URI必须和Spotify开发者控制台里的配置完全一致,包括结尾的斜杠、端口号、大小写(比如你用的http://localhost:8888/callback/,控制台里要一字不差) - 在开发者控制台的应用设置中,将该URI添加到「Redirect URIs」列表,保存后等待5-10分钟让配置生效
2. 切换授权方式(关键:获取他人数据必须走用户主动授权流程)
util.prompt_for_user_token是旧版授权方式,且指定USERNAME仅适用于自己的账号(依赖本地缓存)。获取他人数据必须通过授权码流程,让目标用户主动登录授权你的应用:
替换原有代码为以下实现:
import spotipy from spotipy.oauth2 import SpotifyOAuth # 替换为你的应用信息 SPOTIFY_CLIENT_ID = "你的客户端ID" SPOTIFY_SECRET = "你的客户端密钥" SCOPE = "user-top-read" REDIRECT_URI = "http://localhost:8888/callback/" # 初始化授权对象 sp_oauth = SpotifyOAuth( client_id=SPOTIFY_CLIENT_ID, client_secret=SPOTIFY_SECRET, redirect_uri=REDIRECT_URI, scope=SCOPE ) # 生成授权URL,发送给目标用户 auth_url = sp_oauth.get_authorize_url() print("请让目标用户访问以下URL完成授权:", auth_url) # 用户授权后会跳转到redirect URI,复制URL中的code参数 code = input("请输入授权后URL中的code参数:") # 用code换取访问令牌 token_info = sp_oauth.get_access_token(code) access_token = token_info["access_token"] # 初始化Spotify客户端 sp = spotipy.Spotify(auth=access_token) # 获取目标用户的热门艺人数据 top_artists = sp.current_user_top_artists(limit=50, time_range="medium_term") # 输出结果 print("该用户过去6个月的热门艺人:") for artist in top_artists["items"]: print(artist["name"])
3. 关键注意事项
- 不能直接通过他人的
USERNAME获取数据,必须由目标用户主动登录Spotify并授权你的应用访问其user-top-read权限 - 确保你的Spotify应用设置为「Public」状态(开发者控制台可修改),否则只有你自己能完成授权
- 若仍出现redirect URI错误,检查:
- 控制台配置的URI与代码是否完全一致(斜杠、端口、大小写均不能错)
- 清除浏览器缓存后重新授权,避免旧缓存干扰
内容的提问来源于stack exchange,提问作者TheBeef
相关产品推荐
相关产品推荐

