过去,使用 Twitter API 版本 1,我使用以下 URL 来获取所有带有“棒球”标签的推文的 JSON 提要:
http://search.twitter.com/search.json?q=%23baseball&result_type=recent
您如何使用 API 1.1 版获得类似的结果?我使用 PHP 作为我的服务器端代码,所以不确定是否需要使用它来进行身份验证等?
示例代码将非常有帮助。谢谢。
过去,使用 Twitter API 版本 1,我使用以下 URL 来获取所有带有“棒球”标签的推文的 JSON 提要:
http://search.twitter.com/search.json?q=%23baseball&result_type=recent
您如何使用 API 1.1 版获得类似的结果?我使用 PHP 作为我的服务器端代码,所以不确定是否需要使用它来进行身份验证等?
示例代码将非常有帮助。谢谢。
如您所知,现在需要经过身份验证的请求,因此您可能需要先查看一些内容。新的 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 格式。
如果您只想测试,可以执行以下操作:
访问 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)
}
这是一个使用请求 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()