2013-06-13 12 views
21

In der Vergangenheit unter Verwendung von Twitter API-Version 1, habe ich die folgende URL einen JSON-Feed aller Tweets mit dem Hashtag "Baseball" zu erhalten:Twitter Suche nach Hashtag Beispiel API v1.1

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

Wie erreichen Sie ein ähnliches Ergebnis mit API Version 1.1? Ich benutze PHP als meinen serverseitigen Code, also nicht sicher, ob ich ihn benutzen muss, um mich zu authentifizieren und so?

Beispielcode wäre sehr hilfreich. Vielen Dank.

Antwort

36

Wie Sie wissen, sind jetzt authentifizierte Anfragen erforderlich. Es gibt also ein paar Dinge, die Sie zuerst betrachten müssen. Die neue 1.1-Suche, die Verwendung von Hashtags und die Authentifizierung.

Twitter Suche nach 1,1

Die neue API-Dokumentation twitter Suche kann here gefunden werden. Gemäß diesen Dokumenten:

https://api.twitter.com/1.1/search/tweets.json ist die neue Ressourcen-URL für die Suche.

Hashtag sucht

Sie haben diesen Teil richtig verstanden haben! %23 dekodiert zu einem # Zeichen.

Authentifizierung

OAuth ist viel komplexer. Es würde helfen, wenn Sie nur eine Bibliothek verwendet haben, die gerade funktioniert hat.

Hier ist a post viele Menschen gefunden, die nützlich sind, um Ihnen zu helfen, authentifizierte Anfragen an die 1.1 API zu machen. Dazu gehört eine Ein-Datei-Include-Datei library, um Anfragen wie die von Ihnen benötigten zu stellen.

Beispiel

Dieses Beispiel vorausgesetzt, dass Sie die obige Bibliothek verwenden und deine Schlüssel usw. einrichten, um Ihre Anfrage zu machen:

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

Ja, das ist es. Abgesehen von der kleinen Einrichtung, die Sie tun müssen (wie mein Post erklärt), ist dies alles, was Sie für authentifizierte Anfragen benötigen.

Antwort

Die Antwort wird Ihnen in JSON zurückgegeben. Von der overview:

API v1.1 unterstützt nur JSON. Wir haben dies schon seit einiger Zeit angedeutet, zuerst haben wir die XML-Unterstützung auf der Streaming-API und neuerdings auf der Trend-API eingestellt. Wir haben uns entschieden, die Unterstützung für das JSON-Format zu nutzen, das auf der Plattform gemeinsam genutzt wird.

+0

Vielen Dank. Es hat für mich funktioniert. –

+0

@Jimbo: Danke für die tolle Antwort (+1) .Ich habe ein Problem Ich mache eine Web-App, die auf Ihrer Lösung basiert Aber ich habe Fehler "Rate Limit überschritten" Fehlermeldung Wie kann ich es lösen Ich möchte ich wissen müssen andere Authentifizierungsmethoden folgen? Kann ich einen Twitter Account eines Users nutzen, der meine Web-App benutzt? bitte helfen, danke .. – mcacorner

+1

Großartiges Beispiel! Vielen Dank! – markzzz

4

Wenn Sie nur testen wollen, können Sie die Folge tun können:

Zugriff auf die twitter dev Konsole: https://dev.twitter.com/console

In Authentifizierung setzen: OAuth 1, die Sie von geben Erlaubnis fragen Ihre Twitter-Konto.

Anforderungs-URL GET setzen

In url: https://api.twitter.com/1.1/search/tweets.json?q=%23yourhashtag

Nach Senden, in anfordern Fenster den Berechtigungswert kopieren.

Jetzt in Ihrem Anfrage-Header.

Zum Beispiel:

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

+1 für Golang Beispiel. –

1

Hier ist ein einfaches Beispiel in Python mit anwendungs ​​nur Auth der Anfragen API. Erhalte Schlüssel, indem du eine App unter https://apps.twitter.com/app/new erstellst.

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() 
Verwandte Themen