21

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

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

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

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

4

3 回答 3

38

如您所知,现在需要经过身份验证的请求,因此您可能需要先查看一些内容。新的 1.1 搜索,如何使用主题标签和身份验证。

推特搜索 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();

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

回复

响应以 JSON 格式返回给您。从概述

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

于 2013-06-14T08:41:34.617 回答
4

如果您只想测试,可以执行以下操作:

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

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

请求 URL 放 GET

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

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

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

去例子:

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)
}
于 2014-06-25T03:45:02.760 回答
1

这是一个使用请求 API 使用仅应用程序身份验证的 Python 中的简单示例。通过在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()
于 2016-10-23T18:51:45.827 回答