10

OAuth2::AccessToken.post() メソッドは、ドキュメントで次のように指定されています。

(オブジェクト) post(path, opts = {}, &block)

いくつかの引数を渡そうとしていますが、間違っているようです:

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

パラメータがメソッドに到達することはなく、値は常に nil です。では、引数を指定して post メソッドを使用する正しい方法は何ですか? そして、その &block は何ですか?

また、警告が表示されます: CSRF トークンの信頼性を確認できません。これも問題の原因になっている可能性があります。アプリの外部から OAuth api を使用している場合です。OAuth 2 は Doorkeeper gem を介して実装されます。

更新: スコープを定義した後、CSRF 警告はなくなりました。また、URL の一部として「?title=test&...」を指定することで、この post() メソッドを引数付きで使用することもできます。文書化されているように、この方法を使用する方法を知っておくとなお良いでしょう。

4

2 に答える 2

11

POST または PUT の本文には、options body パラメータを介してアクセスします。これに関するドキュメントはありません。これを発見するには、oauth クライアント コード自体を調べる必要がありました。

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

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

response = token.post('/oauth/create.js', {body: {:title => "title", :description => "desc"}})
于 2012-10-27T00:43:10.900 に答える
3

このブロックを使用して、パラメーターを post リクエストに渡すことができます。

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

OAuth2 gem はファラデーを使用します。requestオブジェクトはファラデー リクエストであるため、リクエストとともにパラメーターを渡す他の方法を確認することをお勧めします。

ファラデーの宝石 => https://github.com/lostisland/faraday

于 2012-05-04T00:31:06.887 に答える