2016-11-07 217 views
1

我正在使用RestClient与Spotify API一起工作(但我假设这是一个普遍问题,并不是特定的问题)。缺少参数client_id? Ruby RestClient问题

该API需要传递client_id。我的代码: 授权= 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实现::错误请求=>电子 提出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响应。这里发生了什么????

回答

0

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

由于原始API中的不幸选择,用于填充查询字符串的参数实际上是从头部哈希中取出的。 所以,如果你想传递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 
+0

啊!好的。谢谢!!! – Max