我正在尝试使用Spotify Web API访问我的Spotify设备。有关我尝试访问的特定API端点,请参阅此link。我在macOS Sierra的virtualenv中使用Python 2.7。
我已经拥有了一个授权令牌,我曾经用它做过其他几个函数调用,所以我知道它有效。然而,这是我第一次使用请求库而不是Spotipy包装器,它将http请求抽象为Spotipy函数调用。
上面链接中的文档说明我需要在标题中传递我的授权令牌。我理解在请求模块中你应该将头文件作为字典传递,其中键和值都是字符串。
以下是我用来发出请求的代码:
token_string = token.encode('ascii','ignore')
print type(token_string)
headers = {"Authorization":token_string}
r=requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers)
我将令牌编码为字符串,因为我读取了请求模块更喜欢unicode上的字符串,而令牌最初是unicode。
我一直收到400错误(请参阅下面的打印内容),这是一个授权问题。我认为问题可能是我没有正确传递授权令牌。有没有人对此有任何见解?
<Response [400]>
答案 0 :(得分:1)
根据发布页面上的示例判断,您应该使用Bearer
前缀进行授权(为什么?'检查 5。将令牌返回到您的应用部分Spotify Web API Authorization Guide),所以:
headers = {"Authorization", "Bearer {}".format(token_string)}
r = requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers)
如果您的令牌有效,那么该令牌有效,您无需进行任何编码或任何操作 - 只需将其存储在token_string
的面值中。
已经有Python Spotify客户端模块了,所以不要自己动手,为什么不使用其中一个,比如spotipy
甚至在官方Spotify API examples页面上引用?