2012-04-26 131 views
10

的OAuth2 :: AccessToken.post()方法被这样指定的文档中:Ruby on Rails:如何使用OAuth2 :: AccessToken.post?

(对象)柱(路径,选择采用= {},&块)

我试图传递一些参数,但似乎我做错了:

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

参数永远不会达到该方法,值始终为零。那么,使用post方法和参数的正确方法是什么?那是什么&块?

我也在越来越警告:无法验证CSRF令牌的真实性。这也可能导致问题。这种情况是,我从应用程序的外部使用OAuth api。 OAuth 2通过Gatekeeper gem实现。

更新:在定义范围之后,CSRF警告消失。此外,我设法通过提供作为url一部分的参数来使用此post()方法:“?title = test & ...”。仍然会很高兴知道如何使用这种方法记录。

回答

3

可以使用块将参数传递给POST请求:

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

的OAuth2宝石使用法拉第的request对象是法拉第的要求,所以你可能要检查其他方式与一起传递参数请求

法拉第宝石=>https://github.com/lostisland/faraday

9

在POST主体或PUT经由选项体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 2013-01-15 16:58:37

+5

如果你需要提供头文件,它看起来像这样: 'token.post('/ some/url',{:body => json_str,:headers => {'Content-Type'=>'application/JSON'}})' – 2014-01-10 21:24:30