Twitterボタンでサインインして誰かを接続するための3つのステップを完了するためにphpコードを実装しようとしています。
Twitter のドキュメントで説明されているように、最初に /oauth/request_token への POST リクエストを作成する必要があります
これは fail です。401 エラーが返されます。
「oauth 署名とトークンの検証に失敗しました」
こうやって :
それは私のヘッダーです
Array
(
[0] => Host: api.twitter.com
[1] => User-Agent: skeleton master
[2] => accept:*/*
[3] => Content-Type: application/x-www-form-urlencoded
[4] => Authorization: OAuth oauth_callback="http%3A%2F%2Fj55.host3.com",
oauth_consumer_key="**************",// value from my app
oauth_nonce="sa72twxjlej6xd7cd02dcm51x0ss2g1vq9xj5u2r9m",
oauth_signature="fxaUSTkN8oT8wYnOKfLCEktZmmw%253D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1376917213",
oauth_version="1.0"
)
私の署名機能:
function define_signature(){
$string="oauth_callback=".rawurlencode($this->oauth_callback);
$string.="&oauth_consumer_key=".rawurlencode($this->oauth_consumer_key);
$string.="&oauth_nonce=".rawurlencode($this->oauth_nonce);
$string.="&oauth_signature_method=".rawurlencode("HMAC-SHA1");
$string.="&oauth_timestamp=".rawurlencode($this->oauth_timestamp);
$string.="&oauth_version=1.0";
$str=$this->HTTP_method."&".rawurlencode($this->base_url)."&".rawurlencode($string);
$this->base_string=$str;
$str2=rawurlencode($this->oauth_consumer_secret)."&";
$key=base64_encode(hash_hmac("sha1",$str,$str2,true));
$this->oauth_signature=rawurlencode($key);
}
カールでお送りします
$c=curl_init();
$url="https://api.twitter.com/oauth/request_token";
curl_setopt($c,CURLOPT_URL,$url);
curl_setopt($c,CURLOPT_HTTPHEADER,$header);
curl_setopt($c,CURLOPT_POST,true);
curl_setopt($c,CURLOPT_RETURNTRANSFER,true);
curl_setopt($c,CURLOPT_HEADER,true);
curl_setopt($c, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($c,CURLOPT_SSL_VERIFYPEER,true);
$output=curl_exec($c);
print_r($output);
これは署名関数で使用される基本文字列です
POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&
oauth_callback%3Dhttp%253A%252F%252F.host31.com%
26oauth_consumer_key%**********
%26oauth_nonce%3Dqqlbu83vwexwnugyxi
ipdufus4plexu4ngfhoidlxa%26oauth_signature_method%3DHMAC-
SHA1%26oauth_timestamp%3D1376914890%26oauth_version%3D1.0
私はこれで間違いを見つけていません....svpを助けてください