TwitterOAuth使用简单REST客户机进行400错误请求响应的可能原因

TwitterOAuth使用简单REST客户机进行400错误请求响应的可能原因,rest,twitter,oauth,advanced-rest-client,Rest,Twitter,Oauth,Advanced Rest Client,我已经在设置/…/Keys和访问令牌页面中生成了访问令牌,现在有了一个 用户密钥 使用者密钥 所有者ID(即使可能已经生成) 访问令牌 访问令牌秘密 我使用一个rest客户端来测试是否能够使用这个api端点获取最新的3种状态 以及以下标题 接受:/ 连接:关闭 用户代理:OAuth gem v0.4.4 内容类型:application/x-www-form-urlencoded 内容长度:76 主持人:api.twitter.com 授权:OAuth oauth_消费者_密钥= oa

我已经在设置/…/Keys和访问令牌页面中生成了访问令牌,现在有了一个

  • 用户密钥
  • 使用者密钥
  • 所有者ID(即使可能已经生成)
  • 访问令牌
  • 访问令牌秘密
我使用一个rest客户端来测试是否能够使用这个api端点获取最新的3种状态

以及以下标题

  • 接受:/
  • 连接:关闭
  • 用户代理:OAuth gem v0.4.4
  • 内容类型:application/x-www-form-urlencoded
  • 内容长度:76
  • 主持人:api.twitter.com
  • 授权:OAuth
    • oauth_消费者_密钥=
    • oauth_签名=
    • oauth_签名法=
    • oauth_时间戳=
    • oauth_代币=
    • oauth_版本=
显然,端点地址(上面)中的“userid here”被我的用户名(我知道我也可以使用我的userid,但这不重要)以及“Authorization”值替换为真实值。这就是我的问题所在

每个“oauth…”授权参数与相关Twitter生成和提供的令牌或密钥(在文章顶部附近提到)的映射是什么?

我一直收到一个“400错误请求”响应,我觉得是授权失败了,因为密钥位置的排列不正确。我不知道哪个值指向哪个“oauth…”值

最后,“Authorization”参数头的结构如下(根据Twitter示例中的说明),作为一行字符串值

OAuth OAuth_consumer_key=“xvz1evFS4wEEPTGEFPHBog”,OAuth_nonce=“kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg”,OAuth_签名=“tnarxj06cwhq44gcs1sk%2FjLY%3D”,OAuth_签名方法=“HMAC-SHA1”,OAuth_时间戳=“1318622958”,OAuth_令牌=“37073112-gmhxmagyylbNetizernfsmr9eyzejab”,OAuth版本=“1.0” )

我只是想用一个GET来获取最后3个状态,但一直无法。此外,我计划将这些值转换为环境变量,但这并不重要

更新 现在使用邮递员,它在映射方面更好,但现在我

    {
“错误”:[ { “代码”:32, “消息”:“无法验证您的身份。” } ]
}

对于邮递员部分,请确保将Timestamp和nonce留空,并在点击发送之前点击“更新请求”。这将生成时间戳和nonce,否则每次都会出现授权失败。我只是用我的twitterapi证书尝试了一下,效果很好

对于Oauth gem代码,我发现奇怪的是,对于
GET
请求,您有一个
Content-Type
Content-Length
头。看起来
400错误请求可能是因为您试图对仅支持
GET
的端点执行
POST
。事实上,当我试图对该端点执行
POST
时,它会告诉我

{
  "errors": [
    {
      "code": 86,
      "message": "This method requires a GET or HEAD."
    }
  ]
}
所以400实际上是个好消息——这意味着授权是有效的,您只是用错误的方式调用了API