反向认证需要Twitter消费者秘密吗?

时间:2014-07-18 15:26:01

标签: ios twitter oauth twitter-oauth

我正忙着在iOS上实现反向身份验证。我是在this exampletwitter documentation的基础上制作的。

我正在试图弄清楚消费者秘密是否必须从文档执行STEP 1(获取特殊请求令牌)。文档说:

  

作为示例,请考虑使用使用者密钥JP3PyvG67rXRsnayOJOcQ和consmer secret ydC2yUbFaScSlykO0PmrMjXFeLraSi3Q2HfTOlGxQM签署以下值的请求。

似乎需要秘密。但随后它列出了请求的参数:

  

oauth_consumer_key JP3PyvG67rXRsnayOJOcQ

oauth_nonce 1B7D865D-9E15-4ADD-8165-EF90D7A7D3D2
oauth_signature_method  HMAC-SHA1
oauth_timestamp 1322697052
oauth_version   1.0
x_auth_mode reverse_auth

并且没有秘密。而且没有oath_signature。然后通过以下方式证实了我的怀疑:

  

这些参数应该产生如下所示的签名基本字符串:

     

POST&安培; HTTPS%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&安培;

 oauth_consumer_key%3DJP3PyvG67rXRsnayOJOcQ%26
 oauth_nonce%3D1B7D865D-9E15-4ADD-8165-EF90D7A7D3D2%26
 oauth_signature_method%3DHMAC-SHA1%26
 oauth_timestamp%3D1322697052%26
 oauth_version%3D1.0%26
 x_auth_mode%3Dreverse_auth

再次,没有秘密,也没有oath_signature参数。然后我看看我从GitHub中获取的示例应用程序,看到它实际上利用了这个秘密。它产生了一些魔力,将秘密与不同的字符串混合,对其进行加密并使其成为oauth_signature参数,该参数进入其请求的授权标头。完整的授权标题如下所示:

  

的OAuth oauth_timestamp = “1405695110”,oauth_nonce = “0C38A128-42B1-41D1-B31D-EBEBE8971470”,oauth_version = “1.0”,oauth_consumer_key = “u97hVQZtAcRbLWHv5CkONbaJ8”,oauth_signature_method = “HMAC-SHA1”,oauth_signature =“iuaqaN1MvFHyKMa95LFWXCxUfDM%3D “

这个和Twitter doc的例子之间的唯一区别是,这里有oauth_signature参数(由秘密制作)。这个例子可以正常工作。我在签名时尝试删除这个秘密并从Twitter收到错误。

所以我很困惑。文档没有明确说明秘密是必需的,而示例则将其作为其重要部分。这是强制性的吗?如果没有,请你解释如何在没有秘密的情况下建立请求?

0 个答案:

没有答案