post - Twitter-获取请求 token 响应 401 - POST

标签 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 签名页面中给出的方式附加它们。

第二步:在百分比编码后附加 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,

到目前为止一切顺利..

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

  1. 您的应用程序的消费者 secret
  2. 访问 token (如 https://dev.twitter.com/docs/auth/creating-signature 页面所述)

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

我还没有将我的帖子发送到 Twitter,对吗?这里的访问 token 是指承载 token 吗?

该页面甚至没有提到如何获取访问 token (实际上确实如此,但我正在执行 POST 来获取此访问 token 吗?!)

感谢您的帮助!

最佳答案

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

第 1 步:向 Twitter 请求未经授权的请求 token

第 2 步:Twitter 将使用请求 token 和请求 token key 进行响应

第 3 步:使用请求 token 将用户发送到 Twitter,以获得用户对您的应用的授权

第 4 步:Twitter 将回复验证码

第5步:将请求 token 和验证码发送到Twitter以获取访问 token

第 6 步:Twitter 将使用访问 token 和访问 token key 进行响应

第 7 步:使用访问 token 和访问 token key 向 Twitter api 发出请求

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

获得请求 token 和请求 token key (步骤 2)后,您可以将用户发送到 Twitter 授权 URL 以向您的应用授予授权。这是通过将请求 token 作为查询字符串附加到授权 url 并让用户访问该 url 来实现的(步骤 3)。即

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

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

然后,您向 Twitter 发出请求,以将请求 token 交换为访问 token 。这是通过将包含 oauth_verifier 代码的签名请求发布到 Twitter 访问 token URL ( https://api.twitter.com/oauth/access_token ) 来实现的。签名 key 是使用百分比编码的消费者 key 构建的,该消费者 key 使用与号字符附加到百分比编码的请求 token key (步骤 5)。

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

最后一点,不记名 token 是 OAuth 2 的一部分,它与 OAuth 1.0a 具有完全不同的授权流程。

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

关于post - Twitter-获取请求 token 响应 401 - POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632320/

相关文章:

security - 具有同源策略和 OAuth 的 REST API 身份验证

javascript - 属性在控制台中返回 null

python - 如何在 python 中比较两个句子字符串的相似性?

c# - ExternalLoginInfo 电子邮件在 Microsoft 和 Facebook oauth2、MVC C# 中始终为 null?

php - Laravel REST API - 无限循环

python - 模块 'tweepy' 没有属性 'OAuthHandler'

google-chrome - Chrome : Source of Post Data?

ios - 第一个 iOS 应用程序,查询我的服务器的正确方法

javascript - 使用jquery扩展textarea,当我单击提交按钮时不提交表单

c# - 如何创建调度程序(例如安排推文或 api 请求)