缺少参数client_id ?? Ruby RestClient问题

时间:2016-11-07 21:08:06

标签: ruby rest-client

我正在使用RestClient来使用Spotify API(但我假设这是一个普遍的问题,而不是专门的Spotify)。

API需要传递client_id。我的代码: authorization = Base64.strict_encode64"#{@ clientID}:#{@ clientSecret}" 开始

request_body = { response_type: 'code', client_id: @clientID, redirect_uri: REDIRECT_URI }
#response = RestClient.get(AUTHORIZE_URI, request_body)
puts response = RestClient::Request.execute(method: :get, url: AUTHORIZE_URI, payload: request_body)

救援RestClient :: BadRequest => Ë     把e.response 端

但是我收到BadRequest异常,并且响应声明"缺少必需参数:client_id"。

如果我做卷曲:

puts `curl -I -s -X GET "#{AUTHORIZE_URI}?client_id=#{@clientID}&response_type=code&redirect_uri=REDIRECT_URI"`

我得到正常的200 OK回复。这是怎么回事????

1 个答案:

答案 0 :(得分:0)

您必须使用params哈希中的headers密钥来传递查询参数。以下文档

  

由于原始API中的不幸选择,params过去常常使用   填充查询字符串实际上是从标题哈希中取出的。   所以如果你想传递params哈希和更复杂的选项,   使用特殊键:标题哈希中的params。这个设计可能   改变未来的主要版本。

RestClient::Request.execute(method: :get, 
                            url: 'http://example.com/resource',
                            timeout: 10, 
                            headers: {params: {foo: 'bar'}}
                           )

 ➔ GET http://example.com/resource?foo=bar