10

OAuth2::AccessToken.post() 方法在文档中是这样指定的:

(对象)发布(路径,opts = {},&block)

我试图传递一些论点,但似乎我做错了:

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

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

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

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

4

2 回答 2

11

POST 或 PUT 中的正文通过选项正文参数访问。没有这方面的文档。必须查看 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

您可以使用该块将参数传递给发布请求:

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 回答