2012-04-26 3 views
10

のOAuth2 :: AccessToken.post()メソッドは、マニュアルで、このように指定されている:Ruby on Rails:OAuth2 :: AccessToken.postの使い方

(オブジェクト)ポスト(パス、オプト= {}、&ブロック)

私はいくつかの引数を通過しようとしていますが、私はそれが間違っているM・ようだ:

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

パラメータがメソッドに達することはありません、値はつねにnilです。だから、引数でpostメソッドを使う正しい方法は何ですか?それではブロック&は何ですか?

警告:CSRFトークンの信頼性を確認できません。これは問題にも寄与している可能性があります。このケースでは、アプリの外部からOAuth APIを使用しています。 OAuth 2はDoorkeeper gemによって実装されています。

更新:スコープを定義した後、CSRF警告が消えました。また、私はこのポスト()メソッドを引数で提供することで、URLの一部として ":?title = test & ..."を提供することができます。文書化されているようにこのメソッドを使用する方法を知っていることは素晴らしいことです。あなたが一緒にパラメータを渡すために他の方法をチェックしたい場合がありますので、requestオブジェクトは、ファラデー要求である

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

のOAuth2の宝石はファ​​ラデーを使用しています。

答えて

9

体POSTまたはPUT要求

ファラデーGEMはオプション本体PARAMを介してアクセスされます。これに関する文書はありません。これを発見するためのOAuthクライアントコード自体に見ていた:

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

あなたの例では、正しい体で次のようになります。

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

はこのいただきありがとうございます!私のベーコンを救った! – Jim

+5

ヘッダーを指定する必要がある場合は、次のようになります。 'token.post( '/ some/url'、{:body => json_str、:headers => {'Content-Type' => 'application/json '}}) ' –