Iphone 我的OAuth请求签名与我的服务提供商不同';是一个

Iphone 我的OAuth请求签名与我的服务提供商不同';是一个,iphone,ipad,ios,oauth,hmacsha1,Iphone,Ipad,Ios,Oauth,Hmacsha1,我正在为iPad开发一个使用OAuth1.0a的应用程序 我的问题是,我无法为我的请求\u令牌请求获得正确的签名。 我想要连接的服务有一个调试工具,可以根据OAuth参数检查您应该拥有的签名 结果是: 我得到了正确的签名基码 我有不同的签名 根据我对OAuth的理解,这意味着: 我的签名算法有漏洞(HMAC-SHA1)(但我是从第三方获得的:) 服务提供商错了 是否有任何免费的工具,可能是在线的,可以从签名基础代码和密钥构建签名来检查谁对谁错 感谢您的帮助这不太可能是问题所在,但请尝试使

我正在为iPad开发一个使用OAuth1.0a的应用程序

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

结果是:

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

  • 我有不同的签名

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

  • 我的签名算法有漏洞(HMAC-SHA1)(但我是从第三方获得的:)

  • 服务提供商错了

是否有任何免费的工具,可能是在线的,可以从签名基础代码和密钥构建签名来检查谁对谁错


感谢您的帮助

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

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


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

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

这就留下了密码的使用方式

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

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

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

我已经找出了问题所在,我的使用者密钥包含特殊字符(“+”和“=”),使用这些字符,我的提供者和OAuth iOS框架的签名是不同的

我试着查看RFC,试图决定谁是对的,但无法做出决定。所以我要尝试破解OAuth代码,让它与我的提供商一起工作。一旦我找到它,我会在这个页面上分享这个技巧


因此,请注意特殊字符编码可能很棘手,如果您对如何对特殊字符进行编码以签署您的签名库有任何意见,请随时与我们分享。

谢谢您的回复。我实际上使用了整个OAuthConsumer。但是我知道服务提供商对于OAuth是非常新的,但是没有简单的方法可以联系他们解决技术问题,也无法联系其他开发人员。这就是为什么我倾向于认为问题可能与服务提供商有关。我会仔细检查您列出的常见问题列表,但我认为一切都对我有利。@Dirty Henry刚刚想到了另外两个建议,并用它们编辑了我的答案。@Henry您好,您能为我的iOS应用程序提供一些RightSignature api实现示例吗。