调用Spotify API获取用户热门歌曲时返回403错误求助
Spotify API获取用户热门歌曲返回403错误的解决方法
你的代码返回403 Forbidden错误,核心问题是授权模式错误,同时存在几处代码细节问题,具体原因和修正方案如下:
核心错误原因
你使用了client_credentials(客户端凭证)授权模式,这种模式仅能访问Spotify的公开数据(如公开专辑、歌手信息),无法访问用户私有数据(如用户的热门歌曲、个人播放列表)。访问/me/top/tracks这类接口需要带用户上下文的授权令牌,必须使用授权码模式(Authorization Code Flow),同时申请对应的权限。
遗漏的配置与步骤
1. 配置重定向URI
在Spotify开发者控制台的应用设置中,添加一个重定向URI(比如http://localhost:8080/callback),该URI用于用户授权后接收授权码。
2. 申请必要权限
访问用户热门歌曲需要user-top-read权限,在引导用户授权时必须包含该权限。
3. 切换到授权码模式获取令牌
替换原有的client_credentials模式,改用授权码模式获取包含用户上下文的access token。
修正后的代码示例
import requests import base64 import json # 替换成你的客户端ID和密钥 CLIENT_ID = "你的Client ID" CLIENT_SECRET = "你的Client Secret" def get_token_with_auth_code(auth_code, redirect_uri): auth_string = CLIENT_ID + ":" + CLIENT_SECRET auth_bytes = auth_string.encode("utf-8") auth_base64 = str(base64.b64encode(auth_bytes), "utf-8") url = "https://accounts.spotify.com/api/token" headers = { "Authorization": "Basic " + auth_base64, "Content-Type": "application/x-www-form-urlencoded" } data = { "grant_type": "authorization_code", "code": auth_code, "redirect_uri": redirect_uri } result = requests.post(url, headers=headers, data=data) json_result = json.loads(result.content) return json_result def get_top_tracks(token): query_url = "https://api.spotify.com/v1/me/top/tracks" headers = { "Authorization": "Bearer " + token } result = requests.get(query_url, headers=headers) # 打印返回的JSON数据,便于查看结果 print(result.json()) # 步骤1:先手动访问以下URL获取授权码(替换参数) # https://accounts.spotify.com/authorize?client_id=你的Client ID&response_type=code&redirect_uri=http://localhost:8080/callback&scope=user-top-read # 步骤2:把获取到的授权码和重定向URI填入 AUTH_CODE = "你从回调中得到的授权码" REDIRECT_URI = "http://localhost:8080/callback" token_data = get_token_with_auth_code(AUTH_CODE, REDIRECT_URI) access_token = token_data["access_token"] get_top_tracks(access_token)
额外代码问题修正
- 原代码最后一行
get_top_tracks(myToken)变量名错误,应对应前面的token变量,且需要提取access_token字段 - 原
get_top_tracks函数打印的是响应对象,改为print(result.json())可以查看具体返回内容
内容的提问来源于stack exchange,提问作者Raveesh yadav
相关产品推荐
相关产品推荐

