使用 Python 进行 Spotify API 身份验证

Posted

技术标签:

【中文标题】使用 Python 进行 Spotify API 身份验证【英文标题】:Spotify API authentication with Python 【发布时间】:2015-02-17 17:41:17 【问题描述】:

我正在尝试在 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()

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

【问题讨论】:

您确定以正确的格式提供 client_id 和 client_secret。查看文档,它应该与: 分开。也可以尝试先用 curl 运行相同的流程,然后用 python 复制。 如果你这样做是为了教育/娱乐目的,那么你可以忽略它,但这里有一个用于 Spotify Web API 的 Python 包装器:github.com/plamere/spotipy 否则就是Mariodev所说的。 base64 部分应该是 standard_b64encode(client_id + ':' + secret) (不是 python 专家,可能不是正确的表达式)。 @mariodev,请把你的答案放在答案部分而不是评论中,这样你就可以获得那些甜蜜的,甜蜜的,积分。 【参考方案1】:

在 spotify api 文档中它是: 授权 必需的。包含客户端 ID 和客户端密钥的 Base 64 编码字符串。该字段必须具有以下格式:授权:基本 base64 编码(client_id:client_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

希望对你有帮助!

【讨论】:

您使用什么作为有效的redirect_uri?我想做的就是提出请求。然后我如何发出 https 获取请求?他们所有的例子都是无用的 curl 调用。【参考方案2】:

您确定您提供的client_idclient_secret 格式正确吗? 查看文档,它应该与:分开。

也尝试先用 curl 运行相同的流程,然后用 python 复制。

【讨论】:

以上是关于使用 Python 进行 Spotify API 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Spotify API 发布调用 – 响应 415?

使用 Python 的 Spotify API 授权代码流

在 Spotify 的搜索 API 中按艺术家搜索的正确 python 语法?

多参数 curl 请求 Python、Spotify API

在使用 spotify api 进行用户身份验证后管理 spotify 订阅(取消、升级)

使用 spotify 音频功能 api 上传 MP3 文件进行分析