2016-11-07 12 views
1

私はRestClientを使用してSpotify APIを扱っています(しかし、これは一般的な問題であると仮定しています。パラメータclient_idがありません?? Ruby RestClientの問題

APIには、client_idを渡す必要があります。私のコード: 承認= Base64.strict_encode64 "#{@}クライアントID:{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 プットは エンド

を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ハッシュとより複雑なオプションの両方を渡す場合は、 は、ヘッダーハッシュの特殊キー: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

Ahhh!はい。ありがとうございました!!! – Max

関連する問題