ruby - 使用 Ruby OAuth Gem 将 XML 发布到 OAuth 和签名无效的问题

标签 ruby authentication rubygems oauth

[从 OAuth Ruby Google Group 交叉发布。如果你帮不了我,别担心]

我正在将项目与 TripIt's OAuth API 集成 我遇到了一个奇怪的问题。

我验证良好,我存储和检索给定的 token / secret 用户没问题,我什至可以向多个用户发出 GET 请求 使用 gem 的服务。但是当我尝试使用我需要的一项服务时 POST,我收到 401“无效签名”响应。

也许我不明白如何将数据传递给 AccessToken 的 post 方法,所以这是我的代码示例:

xml = <<-XML
<Request>
  <Trip>
    <start_date>2008-12-09</start_date>
    <end_date>2008-12-27</end_date>
    <primary_location>New York, NY</primary_location>
  </Trip>
</Request>
XML`

response = access_token.post('/v1/create', {:xml => xml},
{'Content-Type' => 'application/x-www-form-urlencoded'})

我已经尝试过使用和不使用事先转义 xml 字符串。 TripIt 的人似乎认为 xml 参数可能不是 包含在 signature_base_string 中,但是当我输出它时 (来自 lib/signature/base.rb)我看到:

POST&https%3A%2F%2Fapi.tripit.com%2Fv1%2Fcreate&oauth_consumer_key %3D%26oauth_nonce %3Djs73Y9caeuffpmPVc6lqxhlFN3Qpj7OhLcfBTYv8Ww%26oauth_signature_method %3DHMAC-SHA1%26oauth_timestamp%3D1252011612%26oauth_token %3D%26oauth_version%3D1.0%26xml%3D%25253CRequest%25253E %25250A%252520%252520%25253CTrip%25253E%25250A %252520%252520%252520%252520%25253Cstart_date%25253E2008-12-09%25253C %252Fstart_date%25253E%25250A %252520%252520%252520%252520%25253Cend_date%25253E2008-12-27%25253C %252Fend_date%25253E%25250A %252520%252520%252520%252520%25253Cprimary_location%25253ENew %252520York%252C%252520NY%25253C%252Fprimary_location%25253E%25250A %252520%252520%25253C%252FTrip%25253E%25250A%25253C%252FRequest%25253E %25250A

这对我来说似乎是正确的。

我输出签名(来自同一个文件)但输出不匹配 lib/client/中 Auth header 的 oauth_signature 参数 net_http.rb。它已在身份验证 header 中进行了 URL 编码。这是 正确的?

有人知道 gem 是否坏了/是否有修复的地方?我发现很难追踪某些代码。

最佳答案

您的 oauth_token 为空。不熟悉协议(protocol),可以吗?

包含正确的 token 后,还请记住在签名中使用 token_secret。

关于ruby - 使用 Ruby OAuth Gem 将 XML 发布到 OAuth 和签名无效的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381010/

相关文章:

css - 属性 html 标签 rails 4

ruby-on-rails - Controller 不继承 before_filter

mysql - 如何根据两个条件从 Ruby Sequel 表中删除行

mysql - 在 Windows 7 64 位上使用 mysql2 安装 ruby​​ 在 rails s 上返回错误

macos - 升级到macOS之后,Mojave gem更新失败

ruby - 具有更多选项的 Yaml

django manage.py 测试身份验证失败

java - 使用已配置的 JAAS 主题来验证 HttpURLConnection?

security - Play Framework 2.3.x : How to secure play-framework application URL

ruby-on-rails - 部署后缺少 gem (Ruby、Ruby on Rails、Capistrano)