【问题标题】:OAuth/Twitteroauth library and Authorization headersOAuth/Twitteroauth 库和授权标头
【发布时间】:2013-04-19 21:12:57
【问题描述】:

我正在尝试通过使用twitteroauth php 库来更好地理解 OAuth。

据我了解,通过 OAuth 进行身份验证的方法是在使用 cUrl 时使用“Authorize”标头。但是,检查 twitteroauth 库的源代码,我可以看到标头设置为用于发布请求:

 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));

应该在“授权”标题中设置的参数实际上是在帖子正文中设置的,而不是在行中:

 curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

这样做的原因是什么?当在 twitter API 指南中为 header 指定以下实现时:

POST /1/statuses/update.json?include_entities=true HTTP/1.1
Accept: */*
Connection: close
User-Agent: OAuth gem v0.4.4
Content-Type: application/x-www-form-urlencoded
Authorization: 
        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"
Content-Length: 76
Host: api.twitter.com

status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21

【问题讨论】:

    标签: php curl oauth twitter twitter-oauth


    【解决方案1】:

    客户端可能会添加 HTTP Expect 标头来告诉服务器“嘿,我希望你以某种方式行事”。出于某种原因,Twitter 的实现不希望你期待任何东西。我用自己的本地实现遇到了这个问题。我不确定为什么 Twitter 想要这个标题。

    您可以在 POST 变量或标题中显示您的凭据和签名。只要设置了正确的变量(oauth_consumer_key、oauth_nonce、oauth_signature、oauth_signature_method、oauth_timestamp 和 oauth_token),两者都将起作用。

    我发现将 Authorization 标头设置为更简洁,因为它不依赖于请求方法(GET、POST、PUT 等)。但 Twitter 处理这两种情况都很好。如果这就是他们在图书馆中实现它的方式,那就这样吧。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2013-01-21
      相关资源
      最近更新 更多