我正在使用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获取我的好友列表效果很好。 因此身份验证是正确的。 似乎是查询参数的错误。
答案 0 :(得分:2)
看起来作者几天前对逗号编码做了一个关键修复。 https://github.com/J7mbo/twitter-api-php/commit/5c2b97e402d04114ca3be6a793eebcd8521d76a5
我的猜测是你的地理编码调用失败并且你的朋友/ ids很好的原因。 最好更新库。
如果您仍然卡住
,请尝试mine答案 1 :(得分:1)
注意:我已经给Tim的答案+1了,确保你有最新版本;)
好的,您确切的问题是不需要urlencode()
您的位置信息。它应该是一个普通的旧GET请求。
示例值:37.781157,-122.398720,1mi
将其放入getfield中:
$getfield = '?q=test&geocode=37.781157,-122.398720,1mi&count=100';
因此,请确保按照文档的格式进行操作,这样你就可以了。我也会将此示例添加到wiki。