Twitter 搜索标签示例 API v1.1

Posted

技术标签:

【中文标题】Twitter 搜索标签示例 API v1.1【英文标题】:Twitter search by hashtag example API v1.1 【发布时间】:2013-06-10 10:42:09 【问题描述】:

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

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

您如何使用 API 1.1 版获得类似的结果?我使用 php 作为我的服务器端代码,所以不确定是否需要使用它来进行身份验证等?

示例代码将非常有帮助。谢谢。

【问题讨论】:

【参考方案1】:

如您所知,现在需要经过身份验证的请求,因此您可能需要先了解一些事项。新的 1.1 搜索,如何使用主题标签,以及身份验证。

Twitter 搜索 1.1

可以在here 找到新的 twitter 搜索 api 文档。根据这些文档:

https://api.twitter.com/1.1/search/tweets.json 是用于搜索的新资源 URL。

标签搜索

你说对了! %23 解码为 # 字符。

身份验证

OAuth 要复杂得多。如果您只是使用刚刚工作的库,那将会有所帮助。

这里是a post,很多人发现它可以帮助您向 1.1 API 发出经过身份验证的请求。这包括一个包含library 的单一文件,以发出您需要的请求。

示例

此示例假设您正在使用上述库并设置您的密钥等。提出您的请求:

// 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();

是的,就是这样。除了您需要做的一些小设置(正如我的帖子所解释的那样),对于您的开发密钥,这就是执行经过身份验证的请求所需的一切。

回应

响应以 JSON 格式返回给您。来自overview:

API v1.1 将仅支持 JSON。一段时间以来,我们一直在暗示这一点,首先是在 Streaming API 上放弃 XML 支持,最近在趋势 API 上放弃了支持。我们选择支持跨平台共享的 JSON 格式。

【讨论】:

@Jimbo:感谢您的出色回答(+1)。我有一个问题我正在制作一个基于您的解决方案的网络应用程序但我收到错误“超出速率限制”错误消息我该怎么办解决它我想知道我必须遵循其他身份验证方法??我可以使用正在使用我的网络应用程序的用户的推特帐户吗?请帮忙谢谢.. 很好的例子!谢谢! 太好了,我正在搜索#tag serch! “你没看错!%23 解码为 # 字符” @KirenSiva 使用上述库,您不需要在$getfield 中输入任何编码字符,因为库会自动为您执行此操作。 如果我不想根据哈希标签进行搜索怎么办。我想获取过去 1 天更新的所有状态。?【参考方案2】:

这是一个简单的 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()

【讨论】:

【参考方案3】:

如果你只是想测试,你可以这样做:

访问 twitter 开发控制台:https://dev.twitter.com/console

在 Authentication put: OAuth 1 中,这将要求您从您的 Twitter 帐户授予权限。

请求 URL 放 GET

在网址中:https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag

发送后,在请求窗口中,复制授权值。

现在把它放在你的请求头中。

Go 示例:

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)

【讨论】:

以上是关于Twitter 搜索标签示例 API v1.1的主要内容,如果未能解决你的问题,请参考以下文章

Twitter:标签搜索查询

如何使用Twitter搜索API获取具有给定主题标签的所有推文?

Twitter 搜索 API 响应?

使用 Twitter 搜索 API 的位置和 OAuth 问题

Twitter 搜索 API:通过 HTTParty “未经授权”,但通过 Curl 成功

使用Ruby Gem for Twitter获取Hashtag的搜索结果