2016-11-07 213 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