【问题标题】:Post to an API using OAuth使用 OAuth 发布到 API
【发布时间】:2015-10-04 21:09:56
【问题描述】:

我正在尝试发布到 API。 API 获取文件并将其转换为 JSON

这是我正在做的事情:

consumer = OAuth::Consumer.new(consumer_key,secret, :site => uri)
accesstoken = OAuth::AccessToken.new(consumer, core_access_token, core_access_secret)

params = {:body => { 
              :binaryData => data, 
              :extension => "txt", 
              :locale => 'en_gb', 
              :instanceType => 'xray', 
              :fieldList => {"field" => ["All"]}
            }.to_json,
            :headers => { 
              'Accept' => 'application/json',
              'Content-Type' => 'application/json' ,
              }
            }
result = accesstoken.post(action, params)

我得到了回复:

<Net::HTTPBadRequest 400 Bad Request readbody=true>

这个错误是什么意思?错误的 URI?错误的访问令牌?或 OAUTH Gem 使用不正确(即我的代码错误)

【问题讨论】:

  • 你为什么要在那里调用 to_json?只需传递一个哈希就足够了
  • 好的,但是。删除 to_json 不会改变响应。
  • 你能提供一个实际的HTTP请求吗?来自网络跟踪、服务器日志还是客户端日志?
  • 没有任何客户端日志记录,因为它没有从浏览器发布,API 服务器日志对我不可用,并且 rails 没有记录任何网络跟踪类型的东西。不知道还能去哪里看?
  • 400 错误通常意味着您的请求格式错误。很可能它甚至没有到达服务器上的 OAuth 逻辑。尝试将您的参数设置为: { 'Accept' => 'application/json', 'Content-Type' => 'application/json' , }

标签: ruby-on-rails ruby api oauth


【解决方案1】:

我觉得应该是这样的:

consumer = OAuth::Consumer.new(consumer_key,secret, :site => uri)
accesstoken = OAuth::AccessToken.new(consumer, core_access_token, core_access_secret)

headers => { 
          'Accept' => 'application/json',
          'Content-Type' => 'application/json'
          }

result = accesstoken.post(action, data, headers)

【讨论】:

  • headers = {etc...} 当然...我接受了这个并处理了代码并得到了一个新错误。 405 不允许。这似乎更接近。
  • 那是特定于服务器的。您使用什么服务?他们必须有错误代码的解释。也许他们只允许 PUT/GET 而不允许 POST。
  • 显然我的帖子根本没有到达服务器。那可能吗?还有什么可能会产生 405 错误?
  • 不,405 必须来自服务器。你在用什么服务?
  • Burning Glass,这是一个简历解析服务。
猜你喜欢
  • 2013-03-14
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 2012-05-16
  • 2013-03-14
  • 1970-01-01
相关资源
最近更新 更多