So, jetzt wird es spannend. Wir bringen jetzt unserm Bot das sprechen bei und wir dürfen ihm dabei sogar die Worte in den Mund legen. Dazu benutzen wir die Twitter REST API. Das ist unsere Schnittstelle mit dem Twitter Service. Über diese API können wir dem Twitter Service mitteilen, was wir von Ihm gerne hätten. Wir sollten also unsere Twitter-Anmelde-Informationen bereit halten.

Weitere Stichworte, die uns nicht völlig unvertraut sein sollten sind cURL und JSON.

Als erstes definieren wir unsere Twitter Account Informationen als Konstanten. Warum nicht als Variablen? Naja, weil sich die Werte ja zur Laufzeit doch nicht ändern. Natürlich solltet ihr an dieser Stelle eure eigenen Werte angeben. Das die Informationen hier im Klartext stehen, ist ein Sicherheitsrisiko. Man kann dieses Thema umgehen, indem man das von Twitter angebotene OAuth benutzt. Ein Exkurs in diese Richtung findet aber im Rahmen dieser Anleitung nicht statt.

define( "TWITTER_LOGIN", "allesblog" );
define( "TWITTER_PASSWORT", "strenggeheim_12294827492836532524985624" );
// Euch ist schon bewusst, dass das nicht das richtige Passwort ist...

Jetzt bauen wir unsere Nachricht zusammen. Im ersten Versuch kleben wir unsere kurze URL einfach an das Ende der Überschrift ran.

$message = $title." ".$jmp;

Wir sollten allerdings immer im Hinterkopf behalten, dass Twitter nur maximal 140 Zeichen pro Nachricht zulässt. Auf alles was länger ist, reagiert Twitter unvorhersehbar. Im Einfachsten Fall wird die Nachricht willkürlich gekürzt.

if (strlen($message) > 140) {
  $title = substr($title, 0, 140-strlen("[...] ".$jmp));
  $message = $title."[...] ".$jmp;
}

Dadurch wird Beispielsweise aus unserer Nachricht “Zulangeüberschriftmitmehrals140ZeichenBeispiel http://j.mp/XXXX” folgender Text “Zulangeüberschriftmitme[…] http://j.mp/XXXX”.

Wie schon eingangs erwähnt, wird cURL als Schnittstelle zu Twitter benutzt. cURL ist eine Standardklasse in PHP und dafür müssen wir niemanden befragen um das Rad nicht neu zu erfinden. Das ist gleich mit dabei.

$curl = curl_init( "http://twitter.com/statuses/update.json" );
curl_setopt( $curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_setopt( $curl, CURLOPT_USERPWD, TWITTER_LOGIN .":". TWITTER_PASSWORT );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, "status=$message" );
curl_exec( $curl );
curl_close( $curl );

Die einzelnen Zeilen noch mal erklärt:

  1. Es wird ein Objekt angelegt, dass als Ziel die Schnittstelle bekommt, mit der man auf Twitter seinen Status setzen kann.
  2. Um die Schnittstelle zu benutzen, müssen wir uns authentifizieren.
  3. Unsere Anmeldeinformationen.
  4. Wir senden einen POST Nachricht ab.
  5. Unsere POST Nachricht enthält das Feld status mit unserer Nachricht.
  6. cURL führt unsere konfigurierte Anfrage aus.
  7. Das Gegenstück zu curl_init() nicht vergessen.

Und wenn wir alles richtig gemacht haben und uns der Twitter Fail Whale nicht auf der Leitung lag, dann sollte jetzt auf der Seite von unserem Twitter Account eine erste Nachricht erschienen sein.

Allesblog#cURL#PHP#Twitter