【问题标题】:How to generate OAuth signature with php for Twitter API?如何使用 php 为 Twitter API 生成 OAuth 签名?
【发布时间】:2011-03-27 02:03:55
【问题描述】:

实际上这不是一个 php 问题,它更多的是关于 OAuth。 我试图了解如何生成 OAuth 签名密钥。 我阅读了 Twitter 文档并尝试了示例,但我不明白如何使用 SHA1。

我应该在带有或不带有 secret_key 的基本字符串上使用 SHA1 吗? 我尝试了很多变体,但签名密钥与示例中的不同。

这是我的代码:

function request_token(){

    $headers = 'POST&';
    $headers .= urlencode('https://api.twitter.com/oauth/request_token');
    $headers .= '%26oauth_callback%3d'.urlencode($this->oauth_callback);
    $headers .= '%26oauth_consumer_key%3d'.urlencode($this->oauth_consumer_key);
    $headers .= '%26oauth_nonce%3d'.urlencode($this->oauth_nonce);
    $headers .= '%26oauth_signature_method%3d'.urlencode($this->oauth_signature_method);
    $headers .= '%26oauth_timestamp%3d'.urlencode($this->oauth_timestamp);

    $request_token_url = 'http://api.twitter.com/oauth/request_token?';
    $sha = sha1($headers);
    $url = $request_token_url.$sha.$this->consumer_secret.'&';

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch, CURLOPT_POST      ,1);
    curl_setopt($ch,CURLOPT_PUT,true); 
    curl_setopt($ch, CURLOPT_HEADER, 1);

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;

}

谢谢

【问题讨论】:

  • 好吧,首先,将所有“+=”替换为“.="。这 ”。”运算符用于 PHP 中的连接。
  • 不,不是“.=.”,只有:“.=”

标签: php twitter oauth


【解决方案1】:

我建议使用Abraham's Open Source OAuth solution 而不是尝试自己编写。

(GitHub)

【讨论】:

    【解决方案2】:

    您可能希望看到这个有效的解决方案another twitter oAuth cURL access token request that fails

    【讨论】:

      【解决方案3】:

      如果您自己提出请求,您可以使用 http://www.eeqqoo.com/index.php?option=com_content&view=article&id=62:oauth-signature-validation-tool&catid=35:php&Itemid=54 测试签名,这对我有很大帮助

      【讨论】:

        猜你喜欢
        • 2012-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 2023-01-12
        • 2020-10-02
        • 2022-07-21
        相关资源
        最近更新 更多