使用Spotify API添加歌曲到播放列表失败,请求排查代码问题
解决Spotify API添加歌曲到播放列表的InvalidSchema错误
你尝试用Spotify API将歌曲添加到播放列表,代码如下:
import requests import json user_id = "user_id" playlist_id = "playlist_id" url = f'"https://api.spotify.com/v1/playlists/{playlist_id}/tracks"' headers = { 'Authorization': 'Bearer secret_auth_token', 'Content-Type': 'application/json', } payload = { "uris": ["spotify:track:64PgpLHuQK3UJ5qZ875Vei"], } response = requests.post(url, headers=headers, data=json.dumps(payload)) print(response.text)
运行后出现错误:
requests.exceptions.InvalidSchema: No connection adapters were found for '"https://api.spotify.com/v1/playlists/2oNkSJU1mGfTAg3ii9nLwc/tracks"'
你已确认认证token具备必要权限(比如能创建播放列表),但不清楚为何无法添加歌曲。
问题原因
错误的核心是URL字符串被额外的双引号包裹。你在格式化URL时加了外层的",导致requests库无法识别正确的HTTP协议地址——它把带引号的整个字符串当成了URL,而不是https://开头的合法地址。
修复后的代码
把URL里的多余引号去掉,同时可以用requests自带的json参数简化代码(不用手动调用json.dumps):
import requests user_id = "user_id" playlist_id = "playlist_id" # 去掉URL外层的双引号 url = f"https://api.spotify.com/v1/playlists/{playlist_id}/tracks" headers = { 'Authorization': 'Bearer secret_auth_token', 'Content-Type': 'application/json', } payload = { "uris": ["spotify:track:64PgpLHuQK3UJ5qZ875Vei"], } # 用json参数直接传入payload,requests会自动处理序列化 response = requests.post(url, headers=headers, json=payload) print(response.text)
额外说明
- 去掉URL的双引号后,requests才能正确识别
https协议,建立正常连接。 - 使用
json=payload代替data=json.dumps(payload)更简洁,也能避免手动序列化可能出现的格式问题。 - 确保你的token确实包含
playlist-modify-public或playlist-modify-private权限(根据播放列表的公开/私有属性)——虽然你说能创建播放列表,但添加歌曲需要这两个权限之一。
内容的提问来源于stack exchange,提问作者ozerutku13
相关产品推荐
相关产品推荐

