Twitter搜索标签示例API v1.1

21
过去,使用Twitter API版本1时,我使用以下URL获取所有带有“棒球”标签的推文的JSON源:

http://search.twitter.com/search.json?q=%23baseball&result_type=recent

如何使用API版本1.1实现类似的结果呢?我正在使用PHP作为我的服务器端代码,所以不确定是否需要对其进行身份验证等操作?
如果能提供示例代码,将非常有帮助。谢谢。
3个回答

38
正如您所知,现在需要进行身份验证的请求,因此有一些事情您可能需要先看一下。包括新的 1.1 搜索、如何使用标签和身份验证。 Twitter 1.1 版本搜索 新的 Twitter 搜索 API 文档可以在 这里 找到。根据这些文档: https://api.twitter.com/1.1/search/tweets.json 是用于搜索的新资源 URL。 标签搜索 你已经掌握了这部分!%23 解码为 # 字符。 身份验证 OAuth 更加复杂。最好使用一个可以直接使用的库。
这里有一篇帖子,很多人都发现它对帮助你进行身份验证的1.1 API请求非常有用。其中包括一个单文件包含,可以像你需要的那样进行请求。 示例 此示例假定您正在使用上述库并设置了您的密钥等。要进行请求:
// Your specific requirements
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$requestMethod = 'GET';
$getfield = '?q=#baseball&result_type=recent';

// Perform the request
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();

Yes,就是这样。除了你需要做的一点设置(如我的帖子所述),为了使用开发密钥,这就是你执行经过身份验证的请求所需的一切。
响应以JSON格式返回给您。从overview中获得:
API v1.1仅支持JSON。我们已经暗示了一段时间,首先在流API和最近在趋势API上放弃XML支持。我们选择支持平台上共享的JSON格式。

太棒了,我正在搜索 # 标签搜索!“你说得没错!%23 解码为 # 字符。” - Kiren S
1
@KirenSiva 使用上述库时,您不需要在 $getfield 中键入任何编码字符,因为该库会自动为您完成此操作。 - Jimbo
如果我不想基于哈希标签进行搜索,而是想获取最近一天内更新的所有状态,该怎么办? - keen
@BSThakrar 每个端点的文档都在这里。您可以使用GET search/tweets来搜索所有使用查询参数(?q=...)的推文。这里是如何构建查询参数的,而since关键字就是您要找的。请好好谷歌一下! - Jimbo
谢谢您的快速回复。但是我已经看过了,我找不到任何方法来保持它为空并获取所有推文。 - keen
显示剩余4条评论

4
如果您只是想测试,可以按照以下步骤进行:
访问 Twitter 开发控制台:https://dev.twitter.com/console 在身份验证中选择 OAuth 1,这将要求您从您的 Twitter 帐户中授权。
请求 URL 中选择 GET。
在 URL 中输入:https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag 发送后,在请求窗口中复制 Authorization 值。
现在将其放入请求标头中。
示例:
func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://api.twitter.com/1.1/search/tweets.json?q=%23golang", nil)
    req.Header.Add("Authorization", `OAuth oauth_consumer_key=...`)

    resp, _ := client.Do(req)
    io.Copy(os.Stdout, resp.Body)
}

1

这是一个使用Python和requests API的应用程序认证的简单示例。通过在https://apps.twitter.com/app/new上创建应用程序来获取密钥。

api_key = ...
api_secret = ...

# https://dev.twitter.com/oauth/application-only
# The base64 stuff described there is the normal Basic Auth dance.
import requests
r = requests.post('https://api.twitter.com/oauth2/token',
                  auth=(api_key, api_secret),
                  headers={'Content-Type':
                      'application/x-www-form-urlencoded;charset=UTF-8'},
                  data='grant_type=client_credentials')
assert r.json()['token_type'] == 'bearer'
bearer = r.json()['access_token']

url = 'https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag'
r = requests.get(url, headers={'Authorization': 'Bearer ' + bearer})
print r.json()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接