请求验证url : https://api.twitter.com/1.1/account/verify_credentials.json
贴一下我们代码吧
$token = "'; //,token和token_secret 是1对的,由客户端上传
$token_secret = "";
$consumerkey = ""; //这个就不说明了,相当于appid吧
$consumerkeySecret=""; //这个就不说明了
$time = time();
$oauth_consumer_key = $consumerkey;
$oauth_nonce=$time . rand();
$oauth_signature_method="HMAC-SHA1";
$oauth_timestamp=$time;
$oauth_version="1.0";
$httpMethod = 'GET';
$url="https://api.twitter.com/1.1/account/verify_credentials.json";
//参数,此次请求中的除了oauth_signature以外的所有参数按照字母顺序升序排列,如果参数名相同,那么按照参数值的字母顺序升序排列。
$params = "oauth_consumer_key={$oauth_consumer_key}&oauth_nonce={$oauth_nonce}&oauth_signature_method={$oauth_signature_method}&oauth_timestamp={$oauth_timestamp}&oauth_token={$token}&oauth_version={$oauth_version}";
//签名串(text)的构成:HttpMethod&url&参数。(一定是先各自urlencode后再用‘&’相连起来)
$signature_text = urlencode($httpMethod) . '&' . urlencode($url) . '&' . urlencode($params);
//echo $consumerkeySecret.'&'.$token_secret;
$signature= base64_encode(hash_hmac("sha1", $signature_text, $consumerkeySecret.'&'.$token_secret,true));//签名方法 $consumerkeySecret.'&'.$token_secret key是由2个组成哟,token和token_secret 是1对的,由客户端上传
$httpHeader =
'Authorization: OAuth ' .
'oauth_consumer_key='.$oauth_consumer_key .
',oauth_nonce='.$oauth_nonce .
',oauth_signature_method='.$oauth_signature_method .
',oauth_timestamp='.$oauth_timestamp .
',oauth_token='.urlencode($token) .
',oauth_version='.$oauth_version .
',oauth_signature='.urlencode($signature);
echo checkLoginTwitter signature_text=".$signature_text." ".$httpHeader;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($httpHeader));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (false === $ret) {
//$ret = curl_errno($ch);
echo "checkLoginTwitter error curl_errno=".curl_errno($ch);
}
curl_close($ch);
返回的n多数据,对我来说没有什么用【只有id和name有用而已】,主要是验证token是否正确。
报{"errors":[{"code":32,"message":"Could not authenticate you."}]} 说明验证数据有问题
参考:https://blog.csdn.net/love2377/article/details/80014552 这个文档中没有说明,key是由2部分组成的,所以走了不少弯路