【问题标题】:My OAuth request signature differs from my service provider's one我的 OAuth 请求签名与我的服务提供商的不同
【发布时间】:2011-11-04 04:40:23
【问题描述】:

我正在使用适用于 iPad 的 OAuth1.0a 开发应用程序。

我的问题是我无法为我的 request_token 请求获得正确的签名。 我要连接的服务有一个调试工具,可以根据您的 OAuth 参数检查您应该拥有的签名。

结果是:

  • 我得到了正确的签名基码

  • 我得到不同的签名

根据我对 OAuth 的理解,这意味着:

是否有任何免费工具(可能是在线工具)可以根据签名基础代码和密钥构建签名以检查谁对谁错?

感谢您的帮助

【问题讨论】:

    标签: iphone ipad ios oauth hmacsha1


    【解决方案1】:

    为什么不直接使用所有 OAuthConsumer 而不仅仅是 HMAC-SHA1 组件?它在许多不同的应用程序中使用得很好,经过良好测试的代码。我会说OAuthConsumer 是“众所周知的”。

    您的服务提供商似乎不太可能出错(除非您是唯一的客户)。

    这就留下了您使用加密代码的方式。

    我看到的关于 OAuth 签名的常见问题:

    • 不对参数进行排序
    • 遗漏了看似不重要的参数
    • 不将参数与基本 URL 分开
    • 使用了错误的 HTTP 方法
    • 重定向或别名。您连接到 server.com,但远程端认为自己是 api.server.com

    您可以做的另一件事是使用相同的客户端代码连接另一个 OAuth 服务,例如 Twitter。如果您的代码可靠地为 Twitter 生成正确的签名,那么它很可能会为任何其他服务做正确的事情。正如您所建议的,这(可能)意味着问题出在您的服务上。我说“可能”,因为每个 OAuth 实现似乎都有自己的怪癖。

    【讨论】:

    • 感谢您的回复。我实际上使用了整个 OAuthConsumer。但我知道服务提供商对 OAuth 来说还很陌生,但是没有简单的方法可以联系他们解决技术问题,也没有联系其他开发人员。这就是为什么我倾向于认为问题可能与服务提供商有关。我会仔细检查您列出的常见问题列表,但我认为一切对我都有好处。
    • @Dirty Henry 刚刚想到了另外几个建议,并与他们一起编辑了我的答案。
    【解决方案2】:

    这不太可能是问题,但请尝试使用 iOS 内置的 HMAC 方法来生成您的 SHA:

    http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/CCHmac.3cc.html

    更有可能的是您的签名基本字符串实际上是错误的。您是否确认您的基本字符串符合规范?您可以在这里使用一个很好的交互式工具来检查您的请求:

    http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/

    【讨论】:

      【解决方案3】:

      我已经弄清楚我的问题是什么,我的使用者密钥包含特殊字符(“+”和“=”),并且由于这些字符,来自我的提供者和来自 OAuth iOS 框架的签名是不同的。

      我尝试查看 RFC 以尝试确定谁是正确的,但无法做出决定。因此,我将尝试破解 OAuth 代码以使其与我的提供商一起使用。找到后我会在这个页面上分享这个技巧。

      所以请注意,特殊字符编码可能很棘手,如果您对如何编码特殊字符以签署您的签名库有意见,请随时分享。

      【讨论】:

      • @Henry 你好,你能提供一些示例,用于在我的 iOS 应用中实现 RightSignature api。
      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 2021-10-15
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多