Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python进行Spotify API身份验证_Python_Django_Api_Authentication_Spotify - Fatal编程技术网

使用Python进行Spotify API身份验证

使用Python进行Spotify API身份验证,python,django,api,authentication,spotify,Python,Django,Api,Authentication,Spotify,我试图在Spotify API中对用户进行身份验证,但它不断向我返回错误代码“invalid_client”。我在Python Django解决方案上实现了这一点,这是我的代码: headers = {'Authorization': 'Basic '+standard_b64encode(client_id)+standard_b64encode(client_secret)} r = requests.post('https://accounts.spotify.com/api/token'

我试图在Spotify API中对用户进行身份验证,但它不断向我返回错误代码“invalid_client”。我在Python Django解决方案上实现了这一点,这是我的代码:

headers = {'Authorization': 'Basic '+standard_b64encode(client_id)+standard_b64encode(client_secret)}
r = requests.post('https://accounts.spotify.com/api/token', {'code': code, 'redirect_uri': redirect_uri, 'grant_type': grant_type, 'headers': headers}).json()

你知道它为什么不起作用吗?

你确定你提供了正确格式的
客户id
客户机密
? 查看文档,它应该用
分隔


还可以尝试先用curl运行相同的流,然后用python进行复制。

在spotify api文档中: 授权 必修的。包含客户端ID和客户端密钥的Base 64编码字符串。字段的格式必须为:Authorization:Basic base64 encoded(client\u id:client\u secret)

所以我想你应该:

import base64
'Authorization' : 'Basic ' + base64.standard_b64encode(client_id + ':' + client_secret)
它对我有用,所以试试看。如果不起作用,我的代码是:

@staticmethod
def loginCallback(request_handler, code):
    url = 'https://accounts.spotify.com/api/token'
    authorization = base64.standard_b64encode(Spotify.client_id + ':' + Spotify.client_secret)

    headers = {
        'Authorization' : 'Basic ' + authorization
        } 
    data  = {
        'grant_type' : 'authorization_code',
        'code' : code,
        'redirect_uri' : Spotify.redirect_uri
        } 

    data_encoded = urllib.urlencode(data)
    req = urllib2.Request(url, data_encoded, headers)

    try:
        response = urllib2.urlopen(req, timeout=30).read()
        response_dict = json.loads(response)
        Spotify.saveLoginCallback(request_handler, response_dict)
        return
    except urllib2.HTTPError as e:
        return e

希望有帮助

您确定以正确的格式提供客户id和客户机密吗。查看文档,它应该用
分隔。还可以尝试先用curl运行相同的流,然后用python进行复制。如果您这样做是出于教育/娱乐目的,那么您可以忽略这一点,但是Spotify Web API有一个python包装器:否则就像Mariodev所说的。base64部分应该是标准的_b64encode(client _id+':'+secret)(不是python专家,可能不是正确的表达式)。@mariodev,请将您的答案放在答案部分而不是注释中,这样您就可以得到这些甜蜜的分数。您使用什么作为有效的重定向uri?我想做的就是提出请求。然后如何发出https get请求?他们给出的所有示例都是毫无用处的curl调用。