使用php cURL通过OAuth进行Twitter身份验证

时间:2014-12-02 17:06:22

标签: php curl twitter oauth

我正在尝试根据访问者提交的搜索字词显示推文。我的代码是:

function searchTwitter($query) {

  $searchquery = urlencode($query);

  //Filter for language
if (isset($_GET['lang'])) {
$langs = array("fr", "en", "es", "de", "it", "pt", "nl", "no", "sv", "fi", "da", "pl", "th", "en-gb");
if(in_array($_GET['lang'], $langs)) {
  $lang = '&lang='.$_GET['lang'];
} else {
  $lang = "";
}
}

$oauth_hash = '';
$oauth_hash .= 'lang='.$lang.'&';
$oauth_hash .= 'oauth_consumer_key=XXXX&';
$oauth_hash .= 'oauth_nonce=' . time() . '&';
$oauth_hash .= 'oauth_signature_method=HMAC-SHA1&';
$oauth_hash .= 'oauth_timestamp=' . time() . '&';
$oauth_hash .= 'oauth_token=XXXX&';
$oauth_hash .= 'oauth_version=1.0';
$oauth_hash .= 'q='.$searchquery.'&';
$oauth_hash .= 'result_type=recent';
$base = '';
$base .= 'GET';
$base .= '&';
$base .= rawurlencode('https://api.twitter.com/1.1/search/tweets.json');
$base .= '&';
$base .= rawurlencode($oauth_hash);
$key = '';
$key .= rawurlencode('XXXX');
$key .= '&';
$key .= rawurlencode('XXXX');
$signature = base64_encode(hash_hmac('sha1', $base, $key, true));
$signature = rawurlencode($signature);

$oauth_header = '';
$oauth_header .= 'lang="'.$lang.'", ';
$oauth_header .= 'oauth_consumer_key="XXXX", ';
$oauth_header .= 'oauth_nonce="' . time() . '", ';
$oauth_header .= 'oauth_signature="' . $signature . '", ';
$oauth_header .= 'oauth_signature_method="HMAC-SHA1", ';
$oauth_header .= 'oauth_timestamp="' . time() . '", ';
$oauth_header .= 'oauth_token="XXXX", ';
$oauth_header .= 'oauth_version="1.0", ';
$oauth_header .= 'q="'.$searchquery.'", ';
$oauth_header .= 'result_type="recent", ';
$curl_header = array("Authorization: Oauth {$oauth_header}", 'Expect:');

$curl_request = curl_init();
curl_setopt($curl_request, CURLOPT_HTTPHEADER, $curl_header);
curl_setopt($curl_request, CURLOPT_HEADER, false);
curl_setopt($curl_request, CURLOPT_URL, 'https://api.twitter.com/1.1/search/tweets.json?   count=100'.$lang.'$q='.$searchquery.'&result_type=recent');
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, false);
$json_content = curl_exec($curl_request);
curl_close($curl_request);
$tweets = $tweets = json_decode($json_content, true);
print_r($tweets);  

我收到错误32:无法验证您的身份。我在互联网上搜索了很多人都遇到了这个问题,但我找不到解决方案。我更喜欢编写自己的脚本而不是使用插件,因为我也想学习它。

0 个答案:

没有答案