CUCM Logo
Do  03.10.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
Do  03.10.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
Fr  04.10.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
 

Blog: Twitter API Teil 2: Wie programmiere ich Twitter Anwendungen?

Autor: Nick   Kommentare (2)   Kurz URL: http://bit.ly/afHukm   Bei Twitter speichern   Bei Facebook speichern   Bei Digg speichern   Bei Delicious speichern   Bei Mr. Wong speichern   Bei Google Bookmarks speichern
14.10.2010
Der erste Teil widmete sich Darstellung von Tweets, vor allem ohne Programmierung. Nun wird die API benutzt, um Tweets zu schreiben ohne die Twitter Seite zu besuchen / verwenden.


Wie kann ich von der eigenen Webseite / Anwendung Tweets schreiben?


Die Hauptarbeit liegt in der Autorisation, denn es wird sich nicht einfach über Benutzername und Passwort angemeldet. Aus Sicherheitsgründen erfolgt die Autorisation über OAuth.


Was ist OAuth?


Kurz gefasst ist OAuth ein Protokol für sichere Autorisierung über das Web. Ein Benutzer erlaubt einer Anwendung den Zugriff auf die Daten bzw. deren Änderung. Dabei gilt eine Homepage oder ein Webservice auch als eine Anwendung. Der Clou ist, das die Anwendung nicht den Benutzername und Passwort erhält, womit die Anwendung kompletten zugriff auf den Dienst hätte. Um auf die Resourcen zuzugreifen, bekommt sie zur Autorisation nur einen sogenannten Token. Erweist sich die Software als bösartig oder wird der Token geklaut, so kann nur diesem Token die Zugriffserlaubnis entzogen werden. Das Passwort muss nicht geändert werden und alle anderen Anwendungen laufen ohne Änderung weiter.


Die Anwendung bei Twitter registrieren


Nicht nur der Benutzer, sondern auch die Anwendung muss registriert werden. Schliesslich muss die Anwendung gezielt angesprochen bzw. "deaktiviert" werden können. Unter "Register an Application" kann die Anwendung angemeldet werden. Nach Möglichkeit wird die Anwendung unter dem selben Twitter Account angelegt, mit dem später auch gearbeitet werden soll. Die meisten Felder des Anmeldeformulars wie Application Name sollten selbst erklärend sein. Bei der Anwendung handelt es sich um eine Homepage, daher ist Application Type = Browser. Wichtig ist die Umstellung "Default Access type" auf "Read & Write", schliesslich sollen Tweets geschrieben werden. Nach Abschluss der Registrierung erhält man eine Übersichtsseite für die Anwendung. Besonders wichtig ist hierbei der Consumer Key & Secret, denn dies sind die Anmeldedaten der Anwendung bei Twitter. Kurzer Begriffshinweis:
Consumer = Client (Anwendung) Berechtigungsnachweis
Token = Benutzer Berechtigungsnachweis


OAuth Implementierung


Mit dieser Anmeldung erfolgte die Festlegung das der Zugriff per Web bzw. Browser erfolgt. Die Hompepage URL wurde auch schon festgelegt. Soweit sind die Daten vorhanden, das die Anwendung eine Verbindung mit Twitter aufbauen kann. Für die Implementierung in ein Programm listet Twitter glücklicherweise Implementierungen von OAuth in verschiedenen Programmiersprachen auf (Übersicht). Für die Beispiele hier wird PHP mit Abraham's TwitterOAuth benutzt. Darin ist nicht nur OAuth implementiert, sondern auch der Zugriff auf die Twitter API. Ausserdem ist die Anwendung ausgeprochen einfach. Die grundsätzlichen Schritte sollten aber in anderen Klassen bzw. Sprachen ähnlich sein.

TwitterOAuth setzt folgende PHP Features voraus:
PHP 5.2.x
cURL
OpenSSL


Entscheidung über das Anwendungsgebiet


Es gibt nun 2 Anwendungsszenarien. Die erste Möglichkeit, es gibt nur einen "starren" Twitter Benutzer auf der Seite. Üblicherweise wird Twitter dann nur "intern" vom Seiten Admin genutzt. Zum Beispiel um neue Blog Beiträge von der Seite auf Twitter (automatisch) anzukündigen. Die andere Möglichkeit ist, das beliebig viele verschiedene Benutzer ihren Twitter Account auf der Seite benutzen möchten. Dies kann zum Beispiel auf einer Community Seite erfolgen. Dann muss sich jeder einzele Benutzer mit der Anwendung bei Twitter autorisieren.


Fall #1: Einzelener Twitter Account


Bei nur einem Benutzer braucht der OAuth Token nur einmal bei Twitter geholt werden und wird sich fortan immer mit diesem anmelden. Dazu wird bei Twitter die angemeldete Anwendung betrachtet (View your applications) und "My Access Token" ausgewählt. Dort befindet sich das "OAuth Token" und das "OAuth Token Secret" für die Autorisation des Benutzers. Die Token am Besten in der "config" Datei speichern. Nun sind alle Daten vorhanden, um Twitter zu benutzen.

// Config:
$consumer_key    = "Consumer Key ";
$consumer_secret = "Consumer Secret";
$access_key      = "OAuth Token" 
$access_secret   = "OAuth Token Secret";

// Anwendung:
require_once('twitteroauth/twitteroauth.php');

// Mit Twitter verbinden
$twitter = new TwitterOAuth ($consumer_key, $consumer_secret, $access_key, $access_secret);

// Einen Tweet posten
$twitter->post("statuses/update", array("status'"=> "Test #1 von TwitterOAuth via @cucm"));



Fall #2: Mehrere Twitter Accounts


Bei mehreren Twitter Accounts benötigt jeder Account seinen eigenen Berechtigungsnachweis (OAuth Token + Secret). Dafür wird erstmal ein temporärer Token erzeugt. Mit diesem Token meldet sich der Benutzer bei Twitter an und erlaubt der Anwendung den Zugriff auf sein Profil.

Den Client Berechtigungsnachweis besitzen wir bereits (Consumer Key / Secret) und bleibt für jeden Benutzer gleich. Der Initialisierungsprozess findet beispielsweise in der redirect.php und der Abschluss in der callback.php statt. Beide Schritte sind ohne Benutzereingriff möglich.

Folgen wir im Detail den (englischen) Anweisungsschritten von Abraham's TwitterOAuth Documentation. Dazu werden 2 Dateien angelegt, beide kommen erstmal ohne Benutzer Interaktion aus. Die redirect.php bereitet eine Weiterleitung zu Twitter vor. Die callback.php wird von Twitter nach der erfolgreichen Autorisation aufgerufen.

Schritt 1: TwitterOAuth Object (redirect.php)

Auf der Einstiegsseite wird ein neues TwitterOAuth Object gebaut, aber nur mit dem Client Berechtigungsnachweis.
$connection = new TwitterOAuth($consumer_key, $consumer_secret);

Schritt 2: Temporärer Berechtigungsnachweis

Von Twitter einen temporären Berechtigungsnachweis anfordern. Die Antwort temporär z.B. in Session speichern.
$temporary_credentials = $connection->getRequestToken(); // Bei der Anwendungsanmeldung registrierte Callback URL verwenden
$temporary_credentials = $connection->getRequestToken('http://example.com/callback.php?'); // Dynamische Callback URL verwenden

Schritt 3: Twitter Anmelde URL

Mit dem temporären Berechtigungsnachweis muss der Benutzer zu Twitter gehen und der Anwendung den Zugriff auf Twitter erlauben.
$redirect_url = $connection->getAuthorizeURL($temporary_credentials);

Schritt 4: Weiterleitung zu Twitter

Mit der gegeben Twitter URL wird der Benutzer zu Twitter weitergeleitet. An die Twitter URL können Parameter gehängt werden, die wiederrum über die Callback URL zurückgeschickt werden.
https://twitter.com/oauth/authenticate?oauth_token=xyz123
https://twitter.com/oauth/authenticate?oauth_token=xyz123&info=abc // info kommt zurück

Schritt 5: Twitter Login

Auf Twitter führt der Benutzer einen Login durch bzw. registriert sich. Anschliessend erlaubt / verbietet (allow / deny) er der Anwendung den Zugriff. Nun erfolgt von Twitter eine automatische Weiterleitung zur Callback URL

Schritt 6: Benutzer ist zurück (callback.php)

Der Benutzer ist zurück in der callback.php und hat der Anwendung den Zugriff erlaubt. Mit dem temporären Berechtigungsnachweis wird ein neues TwitterOAuth Object erzeugt.
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); // Session siehe Schritt 2

Schritt 7: Aus temporär wird dauerhaft

Twitter wird nach einem dauerhaften Berechtigungsnachweis (long lasting Token) gefragt. Dieses Token wird anstelle des Passwortes benutzt und ist nur in Verbindung mit dieser Anwendung gültigt. Für alle künftigen Anfragen diesen Benutzers wird das Token verwendet, daher sollte es zum Beispiel in der Datenbank gespeichert werden. Wenn eine dynamische / abweichende Callback URL verwendet wurde, muss der "oauth_varifier" Parameter angegeben werden.
$token_credentials = $connection->getAccessToken();
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']); // Dynamische Callback URL

Schritt 7a: Weiterleitung

Nun kann der Benutzer zur eigentlichen Anwendung weiterleitet werden.

Schritt 8: Neues TwitterOAuth Object

Mit diesem Schritt wurde endlich mit Fall #1 gleichgezogen. In der Anwendung wird ein neues TwitterOAuth Object angelegt, diesmal mit dem dauerhaften Berechtigungsnachweis.
$twitter = new TwitterOAuth ($consumer_key, $consumer_secret, $token_credentials['oauth_token'], $token_credentials['oauth_token_secret']);

Schritt 9: Aktionen als Benutzer

Endlich ist die Anwendung autorisiert und kann Aktionen im Namen des Benutzers auszuführen.
$content = $twitter ->get('account/verify_credentials');
$twitter ->post('statuses/update', array('status' => 'Test #2 von TwitterOAuth via @cucm'));
$twitter ->post('statuses/update', array('status' => 'Test #3 von TwitterOAuth via @cucm', 'in_reply_to_status_id' => 123456));

Der Beispiel Code kann auch in den Dateien "redirect.php" und "callback.php" aus dem TwitterOAuth Packet gefunden werden. In der "index.php" sind auch weitere Beispiel Aufrufe gelistet.


Links


Twitter API Teil 1: Wie stelle ich Tweets auf einer Webseite dar
Twitter Developers
Twitter API Documentation
Twitter Widgets
Twitter / Tweet Button
Twitter Register an Application - Twitter Anwendung registrieren
Twitter OAuth Libs
Abraham's TwitterOAuth


Anhang: Code Zusammenfassung für Fall #2

// redirect.php
$connection            = new TwitterOAuth($consumer_key, $consumer_secret);

// Variante: registrierte Callback URL
$temporary_credentials = $connection->getRequestToken();  

// Variante: Dynamische Callback URL
$temporary_credentials = $connection->getRequestToken('http://example.com/callback.php?');

$redirect_url          = $connection->getAuthorizeURL($temporary_credentials);
// Weiterleitung anstossen


// callback.php

// Session siehe Schritt 2
$connection        = new TwitterOAuth(consumer_key, $consumer_secret, 
                       $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

// Variante: Registrierte Callback URL
$token_credentials = $connection->getAccessToken();

// Variante: Dynamische Callback URL
$token_credentials = $connection->getAccessToken($_REQUEST['oauth_verifier']); 


// Anwendung
$twitter = new TwitterOAuth ($consumer_key, $consumer_secret, 
               $token_credentials['oauth_token'], $token_credentials['oauth_token_secret']);

$content = $twitter ->get('account/verify_credentials');
$twitter ->post('statuses/update', array('status' => 'Test #2 von TwitterOAuth via @cucm'));
$twitter ->post('statuses/update', array('status' => 'Test #3 von TwitterOAuth via @cucm', 
                'in_reply_to_status_id' => 123456));





Den Artikel empfehlen

Ähnliche Blog Beiträge

PHP Sicherheit: Wie wird PHP Code gehackt

http://www.cucm.de/blog/115/php_sicherheit_wie_wird_php_code_gehackt/
24.07.2012 - Quasi kein Tag vergeht, ohne das über Webseiten Einbrüche und gestohlene Daten berichtet wird. Die Methoden der Hacker sind stehts gleich und bereits mit wenigen Massnahmen ausser Gefecht gesetzt.  Weiter lesen

Weitere Blog Artikel vom Compuser Club

Dem Computer Club folgen und über Neuigkeiten informiert werden:

RSS Feeds RSS Feeds   CUCM @ Twitter Twitter   CUCM @ Facebook Facebook   CUCM @ Google+ Google+
 

Kommentare

 

KDB´Zur Webseite

25.03.2011
Sehr gut. Funktionierte auf Anhieb.
Gibts irgendwo eine umfassende Übersicht über die API ( Aufrufe, Statuscode )
Klaus-Dieter
 

Nick´Zur Webseite

26.03.2011
Hallo KDB,

freut mich das es sofort funktionierte. Auf Anhieb kann ich im Moment nur auf die "API Documentation" von Twitter selbst verweisen, wobei ich die Dokumentation jetzt nicht soo gut finde.

Twitter API Documentation:
http://dev.twitter.com/doc

Beispiel statuses/update:
http://dev.twitter.com/doc/post/statuses/update
 
 

Kommentar Verfassen

 
(erforderlich)
 
(erforderlich)
Ihre E-Mail Adresse wird nicht auf der Seite veröffentlicht. Sie dient ausschliesslich der möglichen Kontaktaufnahme unserseits.
 
 
 
 

3) Hinweis zur Freischaltung

Um Spam Missbrauch zu verhindern, werden alle Kommentare zuerst von uns geprüft. Daher kann es einen Augenblick dauern, bis Ihr Kommentar auf unserer Webseite erscheint. Spam oder was wir dafür halten, wird unsererseits kommentarlos gelöscht.
To avoid Spam on our Page, we check all Comments before publish. So save you and us Time and dont Spam.


CompUser Club Mainspitze e.V.   |  65428 Rüsselsheim   |  Moselstrasse 21 (Post Gebäude: 1. Stock)