python - 如何在 Python 中格式化对 Spotify Web API 的 GET 请求?
问题描述
我是使用 API 的新手。我正在尝试创建一个脚本,该脚本将从 Spotify 输出公共播放列表的曲目。我在早期遇到了一个障碍:我不确定如何准确格式化我的 GET 请求以检索相关播放列表的曲目以及我将 OAuth 访问令牌放在哪里。我当前的尝试返回 401 状态码。
到目前为止我所做的:
- 我在 Spotify Developers 网站仪表板上创建了一个应用程序。
- 我已将仪表板中的 client_id 和 client_secret 保存到脚本(“spotifysecrets.py”)中。
- 我在我的主脚本中运行了以下代码:
import requests
from spotifysecrets import client_id as cid, client_secret as cs
AUTH_URL = "https://accounts.spotify.com/api/token"
token_req = requests.post(AUTH_URL, {
"grant_type": "client_credentials",
"client_id": cid,
"client_secret": cs
})
access_token = token_req.json()["access_token"]
到目前为止,一切似乎都运行良好。问题出现在下一步。
- 获得令牌后,我在尝试发出跟踪请求时收到401 错误。我写的代码如下:
pl_id = "…" # I have elided the actual playlist ID for the purposes of this question
tracks = "https://api.spotify.com/v1/playlists/{}/tracks".format(pl_id)
songs_req = requests.get(tracks, {
"Authorization": "Basic {}".format(access_token)
})
编辑
我试过使用
songs_req = requests.get(tracks, headers={
"Authorization": "Basic {}".format(access_token)
})
相反,但这会产生 400 错误。
解决方案
我查看了 api,我相信你有一个语法错误:
songs_req = requests.get(tracks, {
"Authorization": "Basic {}".format(access_token)
})
应该:
songs_req = requests.get(tracks, {
"Authorization": "Bearer {}".format(access_token)
})