使用Spotify客户端ID&秘密返回无效客户

时间:2016-09-10 06:54:57

标签: ruby authentication curl encoding base64

我关注Spotify的client credentials authorization flow,但我的所有卷曲请求每次都会返回{"error":"invalid_client"}。以下是Spotify的说明:

  

请求将在请求正文中包含参数:

     
      
  • grant_type - 设置为“client_credentials”。
  •   
     

此POST请求的标头必须包含以下参数:

     
      
  • 授权 - Base 64编码的字符串,包含客户端ID和客户端密钥。该字段必须采用以下格式:Authorization: Basic <base64 encoded client_id:client_secret>
  •   

它们还包括卷曲请求的示例:

$ curl -H "Authorization: Basic ZjM4ZjAw...WY0MzE=" -d grant_type=client_credentials https://accounts.spotify.com/api/token

按照他们的例子,到目前为止,我已尝试使用:

进行卷曲请求
  • client_id和client_secret plain
  • 两个base64单独编码
  • 只有一个或另一个编码
  • 两者都用冒号编码为一个字符串
  • 都编码为一个没有冒号的字符串
  • 上面的每一个都有一个重新生成的客户端秘密

我使用Ruby的Base64#encode64方法进行编码。仍然没有运气。有用的提示吗?

2 个答案:

答案 0 :(得分:4)

好的,我得到了它的工作 - 将我的client_id和client_secret以冒号分隔到Base64.strict_encode64(非Base64.encode64),然后将其传递给上面的curl请求获得200响应访问令牌。显然encode64还不够。

答案 1 :(得分:0)

我在终端中运行curl命令时遇到此错误。

-bash: unexpected EOF while looking for matching `"'

使用单引号而非双引号解决。