0

我正在使用来自 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();

这会生成以下 CURL 选项,以在 api 类中设置:(使用 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 获取我的好友列表效果很好。所以认证是正确的。似乎是查询参数错误。

4

2 回答 2

2

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

我的猜测是这就是你的地理编码调用失败而你的朋友/身份证很好的原因。最好更新库。

如果你仍然卡住,试试我的

于 2013-06-17T09:21:25.950 回答
1

注意:我已经 +1 蒂姆的回答,请确保您拥有最新版本;)

您的问题 - 不要 urlencode!

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

根据geocode 的文档

示例值:37.781157,-122.398720,1mi

将其放入 getfield 工作:

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

因此,请确保其格式符合文档要求,一切顺利。我也会将此示例添加到wiki中。

于 2013-06-17T12:18:38.683 回答