You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python请求获取Spotify授权码时遭遇206服务器错误

问题解决思路

核心错误点分析

  • 响应处理逻辑错误:Spotify的/authorize端点不会直接返回JSON格式的授权码。该端点的正常流程是重定向到你配置的redirect_uri,并在URL参数中携带code,而非返回JSON响应。你调用.json()会因返回内容非JSON格式触发异常,这也是206部分响应出现的原因之一。
  • 冗余请求头干扰:GET请求无需设置Content-Type: application/json,这个头仅用于POST请求发送JSON请求体时,多余的头部字段可能干扰服务器正常处理请求。
  • 缺失用户交互环节:授权码流程必须经过用户手动在浏览器中登录Spotify账号、确认授权应用的步骤,直接用requests.get发送请求会跳过该交互,服务器无法完成授权校验,因此返回异常响应。

修正后的实现步骤

步骤1:生成授权URL并引导用户访问

先构造合法的授权URL,让用户在浏览器中打开完成授权操作:

import requests

CLIENT_ID = "你的客户端ID"
REDIRECT_URI = "你的重定向URI"

code_params = {
    'response_type': 'code',
    'client_id': CLIENT_ID,
    'redirect_uri': REDIRECT_URI,
    'scope': 'user-read-private user-read-email',
}

# 生成标准授权URL
auth_url = requests.Request('GET', 'https://accounts.spotify.com/authorize', params=code_params).prepare().url
print("请在浏览器中打开以下URL完成授权:")
print(auth_url)

步骤2:提取授权码

用户完成授权后,Spotify会自动重定向到你设置的redirect_uri,此时URL格式类似:https://你的重定向地址/callback?code=实际授权码,直接从该URL的code参数中提取授权码即可。

步骤3:用授权码换取访问令牌

拿到code后,通过POST请求获取访问令牌:

token_params = {
    'grant_type': 'authorization_code',
    'code': '用户授权后得到的code',
    'redirect_uri': REDIRECT_URI,
    'client_id': CLIENT_ID,
    'client_secret': '你的客户端密钥',
}

token_response = requests.post('https://accounts.spotify.com/api/token', data=token_params)
token_data = token_response.json()
print(token_data)  # 返回结果包含access_token、refresh_token等关键信息

额外注意事项

  • 确保REDIRECT_URI与Spotify开发者后台配置的地址完全一致,包括协议(http/https)、域名、路径,任何细微差异都会导致授权失败。
  • 若需自动化完成授权流程(无需手动打开浏览器),可使用selenium等浏览器自动化工具模拟用户登录、授权操作。

内容的提问来源于stack exchange,提问作者Victor Zheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:00:56