[英]Twitter API not authenticating when using search query
我正在尝试在PHP中使用Twitter API列出与主题标签匹配的推文:
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$count = 3;
$hashtag = '#twitter';
$oauth = array(
'oauth_consumer_key' => '##########',
'oauth_nonce' => hash('SHA1', time()),
'oauth_signature' => '',
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_token' => '##########',
'oauth_version' => '1.0'
);
$oauth_vals[] = "q={$hashtag}";
foreach ($oauth as $key => $value)
{
if (empty($value)) continue;
$oauth_vals[] = "{$key}={$value}";
}
$oauth_vals[] = "count={$count}";
$base = 'GET&' . rawurlencode($url) . '&' . rawurlencode(implode('&', $oauth_vals));
$composite_key = rawurlencode('##########') . '&' . rawurlencode('##########');
$oauth_signature = base64_encode(hash_hmac('sha1', $base, $composite_key, true));
$oauth['oauth_signature'] = rawurlencode($oauth_signature);
foreach ($oauth as $key => $value)
{
$auth_header[] = "{$key}=\"{$value}\"";
}
$auth_header = implode(', ', $auth_header);
$options = array(
CURLOPT_HTTPHEADER => array("Authorization: OAuth {$auth_header}"),
CURLOPT_HEADER => false,
CURLOPT_URL => "https://api.twitter.com/1.1/search/tweets.json?q={$hashtag}&count={$count}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPGET => true
);
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);
$tweets = json_decode($json, true);
var_dump($tweets); exit;
但是我得到这个错误:
array(1) { ["errors"]=> array(1) { [0]=> array(2) { ["message"]=> string(26) "Could not authenticate you" ["code"]=> int(32) } } }
我做错了什么? Twitter上我的应用程序部分中的所有令牌和密钥都是正确的...因此无法理解为什么出现此错误。
如果我这样做: https://api.twitter.com/1.1/statuses/user_timeline.json?count={$count}&screen_name={$screen_name}
: https://api.twitter.com/1.1/statuses/user_timeline.json?count={$count}&screen_name={$screen_name}
那么它可以正常工作..所以也许我在搜索时使用了不正确的代码api?
好吧,我不确定我的代码出了什么问题,但是使用了这个:
https://github.com/J7mbo/twitter-api-php
效果很好,因此,如果有人想使用Twitter API,我建议使用此代码。
显然,参数必须按字母顺序排列,例如count=1&q=#twitter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.