Spotify API 授权代码流向我返回 400 错误请求

Posted

技术标签:

【中文标题】Spotify API 授权代码流向我返回 400 错误请求【英文标题】:Spotify API authorization code flow return me 400 bad request 【发布时间】:2017-10-19 07:06:15 【问题描述】:

我使用带有授权码的 spotify 令牌 API 方法来获取令牌并刷新具有我用户权限的令牌。 (authorization flow)

这是我使用 nodejs 应用程序发出的请求(控制台日志):

    Request 
2017-05-18T23:16:45.861879+00:00 app[web.1]:   host: 'accounts.spotify.com',
2017-05-18T23:16:45.861879+00:00 app[web.1]:   port: 443,
2017-05-18T23:16:45.861879+00:00 app[web.1]:   scheme: 'https',
2017-05-18T23:16:45.861880+00:00 app[web.1]:   queryParameters: undefined,
2017-05-18T23:16:45.861880+00:00 app[web.1]:   bodyParameters: 
2017-05-18T23:16:45.861881+00:00 app[web.1]:     grant_type: 'authorization_code',
2017-05-18T23:16:45.861881+00:00 app[web.1]:      redirect_uri: 'https://octave-spotify.herokuapp.com/callback',
2017-05-18T23:16:45.861884+00:00 app[web.1]:      code: 'AQASbjsig7owAPhq_ICQSAv1d6iOb0NdB1dqI0M8EQPyjNyv3Dyq4wY8QndzD_Iyykzm9f4lO5xNklltmKBlnKFko3kYeuBm_w1EBlX9_tcMpK6Pg4g-mcAbTdHrArbYJfDCV5LFt-bI5JbPXbxAnfcaHSoto2lk2p6YdQC3EC5Y5FIFBXdCkE4WeZmsPWoDLhQxIMqb8FLrao4-spPq4esE-Btqg73adXyWqU3eO-7MF3291wExc0nFeVK_vefPfH4SbXvFyxmKoHKSOM5etChalj3WMsger9FA6TrPNt5CsAMHNiczW692mfquFapjh516tIgCHzgxPbocN_1xeg6dqvNvUtZ6jjoMW4TQ1j9gAf-B3LXLjCApgSSjqjj53RppFMbF6edv74Ds' ,
2017-05-18T23:16:45.861885+00:00 app[web.1]:   headers:  Authorization: 'Basic MDE1N2MxYjkwNWU5NDk2YTgzZjViOTM2M2IxNzU5ZmI6ZmJkNGNmYWZlMzNjNDczNGFjMzRjNGYyNTQyMDI2NmI=' ,
2017-05-18T23:16:45.861886+00:00 app[web.1]:   path: '/api/token' 
2017-05-18T23:16:45.934575+00:00 app[web.1]: Something went wrong authorizationCodeGrant!  [WebapiError: Bad Request] name: 'WebapiError', message: 'Bad Request', statusCode: 400 

预期的返回是一个令牌和刷新令牌,但我收到一个 api 错误 400 错误请求。 我检查了我的 client_id、secret_id 和 redirect_uri,它们看起来都很好。

你知道是什么问题吗? 感谢您的帮助。

【问题讨论】:

【参考方案1】:

尝试将你的身体参数移动到查询参数:

授权过程从您的应用程序发送一个 请求 Spotify 帐户服务。 (您申请的原因 发送这个请求可能会有所不同:它可能是初始化的一个步骤 您的应用程序或响应某些用户操作,例如按钮 click.) 请求被发送到 Accounts 的 /authorize 端点 服务:

GET https://accounts.spotify.com/authorize 请求将包括 查询字符串中的参数:

一个典型的请求如下所示:

获取 https://accounts.spotify.com/authorize/?client_id=5fe01282e44241328a84e7c5cc169165&response_type=code&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=user-read-private%20user-read-email&state=34fFs29kd09

【讨论】:

我已经做了这个请求。我用范围授权,我得到一个授权码。我将它与我的问题中的查询一起使用以获取具有良好凭据的令牌。我把body参数改成查询参数,不行。 我终于找到了问题,我的授权码不好,因为使用它的错误。我很糟糕;)谢谢你。 @valentinflausse 你是如何解决错误授权码问题的

以上是关于Spotify API 授权代码流向我返回 400 错误请求的主要内容,如果未能解决你的问题,请参考以下文章

Python - Spotify API 返回错误 400“格式错误的 JSON”

python 上的 Spotify API 授权错误

spotify-web-api-node:authorizationCodeGrant()给出400 - 错误请求

spotify-web-api-node:authorizationCodeGrant() 给出 400 - 错误请求

Spotify API 错误 400:“仅支持有效的不记名身份验证”

Spotify API 授权代码流返回“unsupported_grant_type”错误