首页 文章

Twitter Oauth可能导致使用简单的REST客户端进行400 Bad Request响应

提问于
浏览
0

我在Settings /..../ Keys and Access Tokens页面中生成了Access Tokens,现在有了

  • 消费者密钥

  • 消费者密钥

  • 所有者ID(即使这可能已经生成)

  • 访问令牌

  • 访问令牌秘密

并使用休息客户端测试是否能够使用此api终点提取最新的3个状态

https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=userIdHere&count=3

以及以下 Headers

  • 接受:/

  • 连接:关闭

  • User-Agent:OAuth gem v0.4.4

  • Content-Type:application / x-www-form-urlencoded

  • 内容长度:76

  • 主持人:api.twitter.com

  • 授权:OAuth

  • oauth_consumer_key =

  • oauth_signature =

  • oauth_signature_method =

  • oauth_timestamp =

  • oauth_token =

  • oauth_version =

很明显,终点地址(上面)中的'userIdHere'被我的用户名替换(我知道我也可以使用我的user_id,但这不是重点)以及'授权'值代替实际值 . 这就是我的问题所在......

What is the mapping for each of the 'oauth...' authorization parameters to their associated Twitter generated and provided Token or key(s) (which were mention near the top of the post)?

我不断收到“400 Bad Request”回复,并认为授权是失败的,因为关键展示位置的排列不正确 . 我不知道“oauth ...”的 Value 取决于哪个值

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

的OAuth oauth_consumer_key = “xvz1evFS4wEEPTGEFPHBog”,oauth_nonce = “kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg”,oauth_signature = “tnnArxj06cWHq44gCs1OSKk%2FjLY%3D”,oauth_signature_method = “HMAC-SHA1”,oauth_timestamp = “1318622958”,组oauth_token = “370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb”,oauth_version = “1.0” )

我只是想使用GET来获取最后3种状态而无法使用 . 此外,我打算将值切换为环境变量,但这并不重要 .

UPDATE 现在使用Postman,它在绘图方面做得更好,但现在正在使用

{

“errors”:[{“code”:32,“message”:“无法验证您的身份 . ” }]}

1 回答

  • 1

    对于Postman部分,请确保在发送之前将Timestamp和nonce留空并点击“更新请求” . 这将生成时间戳和nonce - 否则每次都会获得授权失败 . 我只是尝试使用我的twitter API凭证,它可以工作 .

    对于Oauth gem代码,我觉得很奇怪你有一个 Content-Type 和一个 Content-Length 标头用于 GET 请求 . 看起来 400 Bad request 可能是因为您试图对仅支持 GET 的 endpoints 执行 POST . 确实,当我尝试对该 endpoints 进行 POST 时,它会告诉我 .

    {
      "errors": [
        {
          "code": 86,
          "message": "This method requires a GET or HEAD."
        }
      ]
    }
    

    所以400实际上是好消息 - 这意味着授权有效,你只是以错误的方式调用API .

相关问题