2012-04-26 15 views
10

OAuth2 :: AccessToken.post() jest określona w ten sposób w dokumentacji:Ruby on Rails: jak używać OAuth2 :: AccessToken.post? Metoda

(Object) post (droga, zdecyduje = {}, & blok)

Próbuję przekazać niektóre argumenty , ale wydaje się, że I * m robi to źle:

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

parametry nigdy nie docierają metody, wartości są zawsze zerowe. Jaki jest więc właściwy sposób używania metody post z argumentami? A co to jest blok &?

Dostaję także OSTRZEŻENIE: Nie można zweryfikować autentyczności tokenu CSRF. Może to również przyczyniać się do problemu. Chodzi o to, że używam OAuth API od zewnętrznej strony aplikacji. OAuth 2 jest realizowany za pomocą klejnotu Doorkeepera.

Aktualizacja: Ostrzeżenie CSRF zniknęło po zdefiniowaniu zakresów. Udaje mi się również użyć tej metody post() z argumentami, podając jako część adresu URL: "? Title = test & ...". Nadal byłoby miło wiedzieć, jak korzystać z tej metody, jak udokumentowano.

Odpowiedz

3

Można użyć bloku przekazać parametry do publikowania żądanie:

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

OAuth2 gem używa Faraday, obiekt request jest prośba Faradaya, więc warto sprawdzić inne sposoby przekazywania parametrów wraz z żądanie

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

9

ciało w POST lub PUT jest dostępna przez param Opcje wyposażenia. Brak dokumentacji na ten temat. Musieli szukać w kodzie klienta OAuth sama odkryć to:

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

swoim przykładzie, z prawidłowym ciała byłoby:

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

Dziękuję za to! Uratowałem mój bekon !! – Jim

+5

A jeśli potrzebujesz nagłówków, będzie wyglądać tak: 'token.post ('/ some/url', {: body => json_str,: headers => {'Content-Type' => 'application/json '}}) ' –