Twitter搜索api 1.1和PHP CURL:无法验证您的身份

时间:2013-06-17 09:15:28

标签: php rest curl twitter

我正在使用Github的James Mallisons Twitter-API: http://github.com/j7mbo/twitter-api-php

传递身份验证凭据后,我尝试获取围绕定义的地理坐标的推文列表:

$fields = "?q=test&geocode=".urlencode("$lat,$lon,$radius")."&count=100";
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$method = 'GET';
$result = $twitter->buildOauth($url, $method)
    ->setGetfield($fields)
    ->performRequest();

这会在api类中生成以下CURL Opts: (使用XXX屏蔽身份验证凭据)

CURLOPT_HTTPHEADER => $header,
CURLOPT_HEADER => 'Authorization: OAuth oauth_consumer_key="XXX", oauth_nonce="XXX", oauth_signature_method="HMAC-SHA1", oauth_token="XXX", oauth_timestamp="XXX", oauth_version="1.0", oauth_signature="XXX"',
CURLOPT_URL => "https://api.twitter.com/1.1/search/tweets.json?q=test&geocode=48.39677%2C9.98042%2C35km&count=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false

使用此选项发出的请求会导致以下错误:

["message"]=>
  string(26) "Could not authenticate you"
["code"]=>
  int(32)

您对此错误有所了解吗? 从/friends/ids.json获取我的好友列表效果很好。 因此身份验证是正确的。 似乎是查询参数的错误。

2 个答案:

答案 0 :(得分:2)

看起来作者几天前对逗号编码做了一个关键修复。 https://github.com/J7mbo/twitter-api-php/commit/5c2b97e402d04114ca3be6a793eebcd8521d76a5

我的猜测是你的地理编码调用失败并且你的朋友/ ids很好的原因。 最好更新库。

如果您仍然卡住

,请尝试mine

答案 1 :(得分:1)

  

注意:我已经给Tim的答案+1了,确保你有最新版本;)

您的问题 - 不要urlencode!

好的,您确切的问题是需要urlencode()您的位置信息。它应该是一个普通的旧GET请求。

根据docs for geocode

  

示例值:37.781157,-122.398720,1mi

将其放入getfield中:

$getfield = '?q=test&geocode=37.781157,-122.398720,1mi&count=100';

因此,请确保按照文档的格式进行操作,这样你就可以了。我也会将此示例添加到wiki