Поиск в Twitter по hashtag example API v1.1
В прошлом, используя 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
Новые поисковые запросы twitter можно найти здесь. Согласно этим документам:
https://api.twitter.com/1.1/search/tweets.json
- это новый URL-адрес ресурса для поиска.
Поиск Hashtag
У тебя есть эта часть! %23
декодирует символ #
.
Аутентификация
OAuth намного сложнее. Это поможет, если вы просто используете только что созданную библиотеку.
Здесь сообщение много людей, которые были полезны, чтобы помочь вам выполнить аутентифицированные запросы к API 1.1. Это включает в себя один файл, включающий 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. Мы уже много раз намекали на это, сначала отказавшись от поддержки XML в Streaming API и совсем недавно в API тенденций. Мы решили бросить нашу поддержку по формату JSON, совместно используемому на платформе.
Ответ 2
Если вы просто хотите протестировать, вы можете сделать следующее:
Доступ к консоли twitter dev: https://dev.twitter.com/console
В разделе "Аутентификация" поставьте: OAuth 1, который попросит вас дать разрешение на свою учетную запись Twitter.
URL-адрес запроса GET
В URL: 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)
}
Ответ 3
Вот простой пример в python, использующий только приложение, используя 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()