Twitter 休息 api request_token 问题

Twitter rest api request_token Issue

我正在尝试为我的应用获取 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 header 值:

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);

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

您的签名基础字符串参数字符串部分不是percent encoded correctly (i.e., & should be %26) according to twitter docs about creating signatures.

您可以使用 this website

验证您的基本字符串

您构建的签名密钥有误。 签名密钥是通过将消费者秘密和令牌秘密与两者之间的符号组合而成的:

consumer_secret&token_secret

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

consumer_secret&

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