2012-04-26 4 views
10

OAuth2 :: AccessToken.post() -Methode wie dies in der Dokumentation angegeben:Ruby on Rails: Wie benutzt man OAuth2 :: AccessToken.post?

(Object) Post (Pfad, entscheidet sich = {}, & Block)

Ich versuche, einige Argumente zu übergeben , aber es scheint, dass ich * es falsch mache:

response = token.post('/oauth/create.js', {:title => "title", :description => "desc"}) 

die Parameter nie sind die Verfahren erreicht, die Werte sind immer gleich Null. Also, was ist die richtige Art der Verwendung der Post-Methode mit Argumenten? Und was ist das & Block?

Ich bekomme auch WARNUNG: CSRF-Token-Authentizität kann nicht überprüft werden. Dies könnte auch zu dem Problem beitragen. Der Fall ist, dass ich OAuth API von außerhalb der App verwende. OAuth 2 wird über Doorkeeper gem implementiert.

Update: Die CSRF-Warnung ist jetzt verschwunden, nachdem ich Bereiche definiert. Auch ich schaffe es, diese post() -Methode mit Argumenten zu verwenden, indem ich das als Teil der URL gebe: "? Title = test & ...". Trotzdem wäre es schön zu wissen, wie man diese Methode wie dokumentiert anwenden kann.

Antwort

3

können Sie den Block verwenden Parameter übergeben Anfrage schreiben:

token.post('/oauth/create.js') do |request| 
    request.params['title'] = "something" 
end 

OAuth2 gem verwendet faraday, das request Objekt ist ein faraday Anfrage, so dass Sie andere Möglichkeiten, um überprüfen möchten Parameter übergeben zusammen mit der Anfrage

faraday gem =>https://github.com/lostisland/faraday

9

der Körper in einem POST oder PUT wird über die Optionen Körper param abgerufen. Keine Dokumentation dazu. Habe in dem oauth Client-Code selbst zu suchen, dies zu entdecken:

https://github.com/intridea/oauth2/blob/ebe4be038ec14b3496827d29cb224235e1c9f468/lib/oauth2/client.rb

Ihr Beispiel mit dem richtigen Körper sein würde:

response = token.post('/oauth/create.js', {body: {:title => "title", :description => "desc"}}) 
+0

Vielen Dank dafür! Sparte meinen Speck !! – Jim

+5

Und wenn Sie Kopfzeilen liefern müssen, sieht es so aus: 'token.post ('/ einige/url', {: body => json_str,: headers => {'Content-Type' => 'Anwendung/json '}}) ' –