2016-11-07 4 views
1

Ich benutze RestClient, um mit der Spotify API zu arbeiten (aber ich nehme an, das ist ein allgemeines Problem, nicht spezifisch spotify).Fehlender Parameter client_id ?? Ruby RestClient Probleme

Die API erfordert die Übergabe von client_id. Mein Code: Genehmigung = 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) 

Rettung RestClient beginnen :: BadRequest => e setzt e.response Ende

Aber ich erhalte eine BadRequest-Ausnahme, und die Antwort lautet "Fehlender erforderlicher Parameter: client_id".

Wenn ich eine Locke zu tun:

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

ich eine normale, 200 OK-Antwort. Was geht hier vor sich????

Antwort

0

müssen Sie params Schlüssel innerhalb headers Hash verwenden, um Abfrageparameter zu übergeben. Dokumentation unter

Aufgrund unglücklicher Entscheidungen in der ursprünglichen API, die zu verwendete params bevölkert das Query-String tatsächlich aus dem Header Hash genommen. Also, wenn Sie sowohl die Params Hash und komplexere Optionen übergeben möchten, verwenden Sie den speziellen Schlüssel: Parameter im Header-Hash. Dieser Entwurf kann in einer zukünftigen Hauptversion ändern.

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! Okay. Vielen Dank!!! – Max

Verwandte Themen