【发布时间】: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 中的连接。
-
不,不是“.=.”,只有:“.=”