Twitter-获取请求令牌响应401 - POST

时间:2013-05-19 07:18:08

标签: post twitter oauth

我正在尝试使用Twitter创建一个应用程序,我陷入了第一步。

我正试图张贴到https://api.twitter.com/oauth/request_token,但每次我得到401。

我正在使用Apache Commns HTTPClient的POST方法,非常特定于我的工具,所以我只是发布高级图片。

My Header:   'oAuth '+
             'oauth_callback="oob",'+
             'oauth_consumer_key="zhaD2Y6RrQaaZQSz21RShA",'+// fake
             'oauth_nonce="'+ <random string of 32Characters>  +'",'+
             'oauth_signature="'+ a.signature +'",'+
             'oauth_signature_method="HMAC-SHA1",'+
             'oauth_timestamp="'+ <Time in seconds since UNIX epoc> +'"';

我正在使用此方法生成签名:

步骤1:编码键值对的百分比,并将其附加到Twitter的签名页面中。

步骤2:在百分比编码后附加POST和URL。这就是我剩下的:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%20%3D%20zhaD2Y6RrQaaZQSz21RShA%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958,

到目前为止一直很好......

我的问题从这里开始,下一步是签署密钥,它需要两件事:

  1. 您的应用程序的消费者秘密
  2. 访问令牌(如此https://dev.twitter.com/docs/auth/creating-signature页面所示)
  3. 将这两个附加到&amp;然后做一个HMAC-SHA1。但是如何获得我的访问权限呢?

    我还要把我的帖子发给推特吗?这里的访问令牌是指承载令牌吗?

    该页面甚至没有提到如何获取访问令牌(它实际上是这样做的,但我正在进行POST以获得此访问令牌吗?!)

    感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

首先要了解的是,Twitter使用的OAuth 1.0a有几个步骤:

步骤1:从Twitter请求未经授权的请求令牌

步骤2:Twitter将使用请求令牌和请求令牌密钥进行响应

步骤3:使用请求令牌将用户发送到Twitter以获取用户对您的应用的授权

第4步:Twitter将使用验证码进行回复

步骤5:将请求令牌和验证码发送到Twitter以获取访问令牌

步骤6:Twitter将使用访问令牌和访问令牌密钥进行响应

步骤7:使用访问令牌和访问令牌秘密向Twitter api发送请求

在流程的每个阶段,必须使用使用者密钥和适当的令牌密钥对请求进行签名。在步骤1,我们只有消费者秘密,因此通过将符号字符附加到百分比编码的消费者秘密来构造签名密钥。 这里还值得注意的是,上面的签名基本字符串缺少oauth_version参数,基本字符串不应以逗号结尾。

获得请求令牌并请求令牌密钥后(步骤2),您可以将用户发送到Twitter授权网址以授予您的应用程序授权。这是通过将请求令牌作为查询字符串附加到授权URL并让用户访问该URL来实现的(步骤3)。即。

https://api.twitter.com/oauth/authorize?request_token=NPxxxxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 请注意,此请求不需要签名。

一旦用户登录Twitter并授权您的应用程序,他们将收到验证码(oauth_verifier)以传回您的应用程序(步骤4)。

然后,您向Twitter发出请求以交换访问令牌的请求令牌。这是通过将包含oauth_verifier代码的签名请求POST到Twitter访问令牌URL(https://api.twitter.com/oauth/access_token)来实现的。签名密钥使用百分比编码的消费者秘密构造,使用&符号附加到百分比编码的请求令牌密钥(步骤5)。

如果一切正常,Twitter将使用access_token和access_token_secret进行响应(步骤6)。您可以使用这些令牌代表用户进行所有将来的请求(步骤7)。这些请求的签名密钥是使用百分号编码的访问令牌秘密附加的百分比编码的使用者密钥构造的。

最后一点,持票人令牌是OAuth 2的一部分,OAuth 2与OAuth 1.0a的授权流程完全不同。

如果您需要检查OAuth签名,可以使用this one等实用程序。

相关问题