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

Python调用Spotify Web API获取授权码异常,返回<Response 200>

Spotify授权码获取问题排查与修复

核心问题

你对Spotify授权码流程的理解有误:授权码不是直接通过后台GET请求就能拿到的,这个流程需要用户在浏览器中完成登录授权操作,授权成功后Spotify会将授权码通过重定向URL的query参数返回。

你当前代码里的auth_code是requests.get()返回的Response对象(打印显示<Response 200>说明请求成功拿到了授权页面的HTML内容),而非实际的授权码字符串,直接把这个对象传给token接口自然会失败。

修复步骤

  1. 生成并引导用户打开授权URL
    先构造完整的授权URL,打印出来后让用户在浏览器中访问,完成登录和授权操作。授权成功后,Spotify会跳转到你指定的redirect_uri,此时URL的code参数就是你需要的授权码。

  2. 提取授权码并请求Access Token
    把从重定向URL中提取到的code字符串,替换到payload的code字段中,再发起token请求。

修正后的代码示例

import requests
import base64

AUTH_URL = 'https://accounts.spotify.com/authorize'
TOKEN_URL = 'https://accounts.spotify.com/api/token'
BASE_URL = 'https://api.spotify.com/v1/'

CLIENT_ID = '你的客户端ID'
CLIENT_SECRET = '你的客户端密钥'
REDIRECT_URI = '你在Spotify开发者后台配置的重定向URI'  # 必须和后台配置完全一致

# 第一步:生成授权URL,引导用户在浏览器打开
auth_params = {
    'client_id': CLIENT_ID,
    'response_type': 'code',
    'redirect_uri': REDIRECT_URI,
    'scope': 'playlist-modify-private',
}
# 构造完整可访问的授权URL
auth_url = requests.Request('GET', AUTH_URL, params=auth_params).prepare().url
print(f"请在浏览器中打开以下URL完成授权:\n{auth_url}")

# 用户授权后,手动输入重定向URL中的code参数
auth_code = input("请输入授权后URL中的code参数:").strip()

# 第二步:请求Access Token
auth_header = base64.urlsafe_b64encode((f"{CLIENT_ID}:{CLIENT_SECRET}").encode())
headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': f'Basic {auth_header.decode("ascii")}'
}

payload = {
    'grant_type': 'authorization_code',
    'code': auth_code,
    'redirect_uri': REDIRECT_URI,
    'client_id': CLIENT_ID,
    'client_secret': CLIENT_SECRET,
}

access_token_request = requests.post(url=TOKEN_URL, data=payload, headers=headers)
access_token_response_data = access_token_request.json()

# 校验响应结果
if 'access_token' in access_token_response_data:
    access_token = access_token_response_data['access_token']
    print(f"获取到Access Token:{access_token}")
else:
    print(f"请求失败:{access_token_response_data}")

额外注意事项

  • redirect_uri必须和你在Spotify开发者后台创建应用时填写的完全一致,包括协议(http/https)、域名、路径,否则会触发授权失败。
  • 如果是后端服务场景,可以通过接收重定向请求自动提取code;脚本场景下手动提取是最直接的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

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