【问题标题】:Twitter- Obtaining a request token Response 401 - POSTTwitter-获取请求令牌响应 401-POST
【发布时间】:2013-05-20 17:08:50
【问题描述】:

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

我正在尝试 POST 到 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 的签名页面中给出的方式附加它们。

Step2:在百分比编码后附加 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 页面所说)

用 & 附加这两个,然后执行 HMAC-SHA1。但是我如何获得我的访问令牌?

我还没有将我的 POST 发送到 Twitter,对吧?这里的access token是指Bearer token吗?

该页面甚至没有提及如何获取访问令牌(实际上确实如此,但我正在做一个 POST 以获取此访问令牌?!)

感谢您的帮助!

【问题讨论】:

    标签: post twitter oauth


    【解决方案1】:

    首先要了解的是 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 并让用户访问该 url 来实现的(步骤 3)。即

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

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

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

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

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

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

    【讨论】:

    • 感谢乔尼的所有帮助。
    • @Jon Susiak 这一步到底是什么意思?这就是我迷路的地方: > 签名密钥是使用百分比编码的消费者秘密构造的,该百分比编码的消费者秘密附加到使用 & 字符的百分比编码请求令牌秘密(第 5 步)。
    猜你喜欢
    • 2011-04-10
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多