Spotify API 发布调用 – 响应 415?

Posted

技术标签:

【中文标题】Spotify API 发布调用 – 响应 415?【英文标题】:Spotify API Post call – Response 415? 【发布时间】:2015-08-13 23:06:34 【问题描述】:

使用 Python,我正在尝试按照链接 https://developer.spotify.com/web-api/authorization-guide/#client_credentials_flow 上的客户端凭据流段落下的说明对 Spotify API 进行 POST 调用,这是我想出的代码。

但是,当我运行它时,我得到了Response [415]。谁能告诉我怎么了?

import pprint
import requests
import urllib2
import json
import base64

client_id='b040c4e03217489aa647c055265d0ac'
client_secret='2c2928bb7d3e43278424002d2e8bda46b'
authorization_param='Basic ' + base64.standard_b64encode(client_id + ':' + client_secret)
grant_type='client_credentials'

#Request based on Client Credentials Flow from https://developer.spotify.com/web-api/authorization-guide/

#Header must be a base 64 encoded string that contains the client ID and client secret key. 
#The field must have the format: Authorization: Basic <base64 encoded client_id:client_secret>
header_params='Authorization' : authorization_param

#Request body parameter: grant_type Value: Required. Set it to client_credentials
 body_params = 'grant_type' : grant_type

url='https://accounts.spotify.com/api/token'

response=requests.post(url, header_params,    body_params) # POST request takes both headers and body parameters
print response

【问题讨论】:

400的状态是你想要的吗? no...400 是错误的请求。我需要 200 header_params='Authorization' : authorization_param,'grant_type' : grant_type response=requests.post(url, header_params) 试试这个 不起作用 - 这给了我响应 400....我们想要一个响应 200... 您确定您的客户 ID 正确吗?我检查了返回文本,它说客户端 ID 无效。 【参考方案1】:

Spotify 请求的身份验证类型只是基本的 HTTP 身份验证。这是一种标准化的身份验证形式,您可以阅读有关here 的更多信息。 requests 库支持基本身份验证,无需您自己创建标头。有关信息,请参阅python requests documentation。

以下代码使用请求库身份验证连接到 Spotify API。

import requests

client_id = # Enter your client id here
client_secret = # Enter your client secret here

grant_type = 'client_credentials'

#Request based on Client Credentials Flow from https://developer.spotify.com/web-api/authorization-guide/

#Request body parameter: grant_type Value: Required. Set it to client_credentials
body_params = 'grant_type' : grant_type

url='https://accounts.spotify.com/api/token'

response=requests.post(url, data=body_params, auth = (client_id, client_secret)) 
print response

我在 Spotify 上创建了一个测试帐户,并创建了一个测试客户端 ID 和客户端密码,可以找到它。我使用 python 2.7.6 得到响应 200 并请求 2.2.1。

【讨论】:

请把mpursuit的答案设置为正确的,很明显这个问题已经被正确回答了,当然会给他/她一些甜甜的分数。

以上是关于Spotify API 发布调用 – 响应 415?的主要内容,如果未能解决你的问题,请参考以下文章

cURL 请求 Spotify API 意外状态:415

使用 fetch 时 POST https://accounts.spotify.com/api/token 415 错误

如何解决RabbitMQ REST调用415响应问题?

Sonos cancelAudioClip API 返回 415 HTTP 响应

REST 调用响应 HTTPS 状态 415

从响应 url 中提取令牌 - Spotify API