Advitum.de auf Google+

Twitter API v1.1 Tutorial – Meine Tweets auslesen

Twitter API v1.1 Tutorial – Meine Tweets auslesen
VN:F [1.9.22_1171]
Bewertung: 4.0/5 (8 Stimmen abgegeben)
Von am
Kategorien: PHP, Programmieren, Tutorials

Seit vorletzter Woche stellen Benutzer der Twitter-API v1 fest, dass die Schnittstelle plötzlich nicht mehr funktioniert. Warum? Twitter unterstützt die API nicht mehr und fordert alle Entwickler auf, nun die API v1.1 zu nutzen. Damit wird das Auslesen der Tweets in Zukunft etwas komplizierter. Damit du auch in Zukunft auf deiner Webseite deine Tweets anzeigen kannst, zeige ich dir in diesem Artikel, wie du die API v1.1 nutzt.

Twitter API v1.1 Tutorial - Meine Tweets auslesen, 4.0 out of 5 based on 8 ratings

Schritt 1: Twitter-App erstellen

Um auf die neue API zugreifen zu können, muss man sich als Twitter-App autorisieren. Hier geht Twitter nun genau so wie Facebook auch vor. Deshalb müssen wir nun zunächst eine Twitter-App erstellen.

Dazu begeben wir uns ins Developer-Center von Twitter und melden uns mit unserem Twitter-Account an. Anschließend finden wir auf der Seite My applications eine Übersicht über unsere Apps, in der rechten oberen Ecke finden wir einen Button zum erstellen einer neuen App.

Hier reicht es, die ersten drei Felder auszufüllen, da wir lediglich Tweets auslesen wollen.
Hier reicht es, die ersten drei Felder auszufüllen, da wir lediglich Tweets auslesen wollen.

Wir müssen noch den Nutzungsbedingungen zustimmen und ein Captcha lösen, aber danach haben wir eine eigene App.

Unter OAuth finden wir die Informationen, die wir zum Autorisieren brauchen.
Unter OAuth finden wir die Informationen, die wir zum Autorisieren brauchen.

Consumer key und Consumer secret werden wir gleich bei der Umsetzung benötigen.

Schritt 2: BearerToken bekommen

Nun können wir im Namen unserer App einen BearerToken anfordern. Für jede Anfrage, die wir an die API senden, müssen wir vorher einen BearerToken erfragen.

POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
                     NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip

grant_type=client_credentials

Diesen Request müssen wir an Twitter senden, um einen BearerToken zu erhalten. Mit PHP können wir diesen Request folgendermaßen absetzen:

<?php
    
    $username = 'lars_ebert';
    $key = "################";
    $secret = "#################################";
    
    $quest = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=" . urlencode($username);
    $tokenUrl = "https://api.twitter.com/oauth2/token";
    
    $auth = base64_encode(urlencode($key) . ':' . urlencode($secret));
    
    $getToken = curl_init();
    curl_setopt($getToken, CURLOPT_URL, $tokenUrl);
    curl_setopt($getToken, CURLOPT_POST, 1);
    curl_setopt($getToken, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . $auth));
    curl_setopt($getToken, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
    curl_setopt($getToken, CURLOPT_RETURNTRANSFER, 1);
    
    $token = json_decode(curl_exec($getToken));
    $token = $token->access_token;
    curl_close($getToken);

Als erstes kombinieren wir den Key und Secret zu unserem AuthKey. Dazu verbinden wir die beiden mit einem Doppelpunkt und enkodieren das Ergebnis mit base64. Dies geschieht hier in Zeile 10.

Als nächstes senden wir mit Curl einen Request an die tokenUrl, fügen den generierten AuthKey in den Header ein (Zeile 15) und fordern von Twitter einen BearerToken an (Zeile 16).

Den Vorbereiteten Curl-Request führen wir nun aus, als Rückgabewert bekommen wir ein JSON-Objekt, dass den BearerToken enthält. Diesen extrahieren wir in Zeile 19 und 20 und beenden dann die Verbindung mit Zeile 21.

Nun haben wir einen BearerToken und können den eigentlichen Aufruf an die Twitter-API senden.

Schritt 3: Twitter-API nutzen

Um nun alle meine eigenen Tweets zu erhalten, setzte ich mit Curl wieder einen Request an die Twitter-API ab.

$curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $quest);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));

    $result = curl_exec($curl);
    curl_close($curl);
    
    $tweets = json_decode($result);
    
    var_dump($tweets);
    
?>

Diesmal übergeben wir aber als Autorisierung den BearerToken (Zeile 26) und bekommen als Rückgabewert die Tweeds. Diese könnten wir nun zum Beispiel so ausgeben:

if(is_array($tweets) && count($tweets) > 0) {
        $first = true;
        foreach($tweets as $tweet) {
            ?>
        
        <article class="tweet<?php echo ($first ? ' active' : ''); ?>">
            <section class="content"><?php echo $tweet->text; ?>
            <time datetime="<?php echo $tweet->created_at; ?>"><?php echo date('d. F H:i', strtotime($tweet->created_at)); ?> Uhr</time>
        </article>
        
            <?php
            $first = false;
        }
    }
Twitter API v1.1 Tutorial - Meine Tweets auslesen, 4.0 out of 5 based on 8 ratings

Jetzt seid ihr dran!

Teilt eure Meinung mit uns in den Kommentaren, gebt eine Bewertung für diesen Artikel ab und teilt ihn in Social Networks!

Über

Ich bin ein junger Webdesigner und Programmierer aus Siegen und blogge auf Advitum.de über meine Erfahrungen im Web. Meine Themenschwerpunkte liegen im Bereich der Web-Entwicklung mit PHP, JavaScript, HTML und anderen Script-, Programmier- und Markup-Sprachen, der Nutzung von Content Management System wie Typo3, Wordpress etc. und der Effekt-Hascherei mit Photoshop. Seit 2008 blogge ich auf Advitum.de – mal mehr, mal weniger regelmäßig – über alles, was mich so interessiert. Wenn dir mein Blog gefällt, freue ich mich immer sehr über Feedback in Form von Kommentaren und E-Mails.

Kommentare zu diese Artikel

Schreibe jetzt einen Kommentar!

David schrieb am Antworten

Hallo!

Vielen Dank für den tollen Artikel.
Die Variable „text“ enthält die eigentlichen Tweets. Leider werden Links als Fließtext ausgegeben und nicht als A-Tags. Gibt es einen anderen Aufruf bzw. wird hier unterschieden in plaintext und HTML-Text? Momentan würde ich es so lösen, dass ich alles mit http am Anfang in einen A-Tag umwandeln würde. Aber es geht bestimmt eleganter.

    Lars Ebert schrieb am Antworten

    Genau das ist das richtige Vorgehen! Ich glaube, so ähnlich geht auch Twitter selbst vor. Deshalb sind die Links auch Fließtext!

Ersin schrieb am Antworten

Hallo, Danke für den Tutorial,

Meine Frage wäre:
Wieso funktioniert es nur mit statuses/user_timeline ?
wenn ich dass hier versuche: statuses/retweet
Dann bekomme ich folgende Fehler:

[message] => Your credentials do not allow access to this resource
[code] => 220

Nicky schrieb am Antworten

Ich weiß, das hier ist schon ein paar Tage älter…
Trotzdem konnte ich mir einen Kommentar irgendwie nicht verkneifen. 😉

Ich selbst bin ja ein durch und durch fauler Mensch, deswegen habe ich schon vor langer Zeit
jquery für mich entdeckt. Für die Einbindung von Tweets hab‘ ich immer mit jquery.tweets.js von Todd Matthews & Steve Purcell gearbeitet. Das ging fix und einfach!
Leider haben die Herrschaften bis dato noch keine funktionierende API-Anbindung bereitgestellt, so dass ich mich nach „Ersatz“ umschauen musste.

Dein Tutorial ist toll gemacht und wirklich spitze erklärt! Leider ist es mir aber zu viel Aufwand.
Für jeden Twitter-Account so ein Aufriß? Ne, nicht mit mir! Manchmal frage ich mich echt
warum wir uns immer wieder von den .com-Spinnern ein Prozedere aufdrängen lassen.

Ich hab‘ auch ne Lösung für das API-Problem gefunden: PHP!

Nein wirklich! Hat nur fünf Minuten gedauert, und geht für alle Benutzernamen und
sogar mit der Hash-Suche.

Einfach via file_get_contents und gut is! Scriptgröße: 640 bytes!!!
Und als weiteres Plus: Keine lahme Twitter-API!!

Das ganze kannste dann per httprequest, jquery (oder ne andre Bibliothek Deiner Wahl) oder noch simpler als javascript in die entsprechende Seite einpflegen und fertig. Da könne die von Twitter Ihre API umstellen bis die schwarz werden!

Wie gesagt, ich finde es toll, dass Du Dir hier so viel Mühe gemacht hast, aber beim Programmieren gilt immer: Je simpler desto besser!

LG

Diese Artikel könnten dir auch gefallen