我的OAuth请求签名与我的服务提供商签名不同

时间:2010-11-18 01:13:51

标签: iphone ipad ios oauth hmacsha1

3 个答案:

答案 0 :(得分:1)

为什么不使用全部OAuthConsumer而不仅仅使用HMAC-SHA1组件?它是经过良好使用的,经过良好测试的代码,可用于许多不同的应用程序。我会说OAuthConsumer是“已知的好”。

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

这就是你如何使用加密代码。

我在OAuth签名中遇到的常见问题:

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

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

答案 1 :(得分:0)

这不太可能是问题,但尝试使用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/

答案 2 :(得分:0)

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

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

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