【问题标题】:Twitter rest api request_token IssueTwitter rest api request_token 问题
【发布时间】:2016-02-08 19:08:36
【问题描述】:

我正在尝试为我的应用获取 oauth 令牌。我关注了this tutorial,但我遇到了这样的错误:

{
  "errors": [
    {
      "code": 32,
      "message": "Could not authenticate you."
    }
  ]
}

这是我的签名基本字符串:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Drntwttr%3A%2F%2Ftwitter&oauth_consumer_key%3DzvWr0ySiGLedBLvFM4CZgW6ut&oauth_nonce%3D144692544640700&oauth_signature_method%3DHMAC-SHA1&oauth_timestamp%3D1446921846&oauth_version%3D1.0

这是我的Authorization 标头值:

OAuth oauth_callback="rntwttr%3A%2F%2Ftwitter", oauth_consumer_key="zvWr0ySiGLedBLvFM4CZgW6ut", oauth_nonce="144692544640700", oauth_signature="%2BHGWye0I4QeBbHWYiJnXhHJGPn4%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1446921846", oauth_version="1.0"

我用我的消费者密钥和秘密加密我的签名基本字符串:

var key = 'myConsumerKey&myConsumerSecret';
var signature = CryptoJS.HmacSHA1(signature_without_sha, key);
var _signature = signature.toString(CryptoJS.enc.Base64);

这里有什么问题?回调地址:rntwttr://twitter

【问题讨论】:

    标签: javascript twitter oauth twitter-oauth


    【解决方案1】:

    根据twitter docs about creating signatures,您的签名基本字符串的参数字符串部分不是正确的percent encoded(即& 应该是%26)。

    您可以使用this website 验证您的基本字符串

    【讨论】:

      【解决方案2】:

      您的签名密钥构造不正确。 签名密钥是通过将消费者秘密和令牌秘密与中间的 & 符号组合而成的:

      consumer_secret&token_secret
      

      在获取请求令牌的情况下,您还没有令牌机密,因此签名密钥只是消费者机密,后跟 & 符号:

      consumer_secret&
      

      在您上面的代码中,您将消费者密钥与消费者秘密组合在一起,从而导致授权错误。

      【讨论】:

        猜你喜欢
        • 2017-04-27
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-16
        • 2011-08-07
        • 1970-01-01
        • 2015-09-12
        相关资源
        最近更新 更多