Tutorial: Twitter API mit PHP-Bordmitteln

Um mit einem PHP Script auf  die Twitter API via OAuth zuzugreifen und einfache Aktionen durchzuführen, z. B. ein Tweet oder eine direct message zu versenden ist kein aufwendiges Framework oder SDK erforderlich, insbesondere, wenn man nur eine „Single User“ Lösung basteln möchte. Das Ganze geht auch mit PHP Bordmitteln – wie genau erklärt das folgende Tutorial.

Mit „Single User“ sind hier kleine individualisierte Tools oder Scripte gemeint, die nur von einem User genutzt werden. Dadurch kann bei der Programmierung auf die etwas aufwendigere OAuth-Benutzerauthentifizierung und Generieung der Token verzichten kann. Stattdessen ist es hier einfacher, die Zugangsdaten (Tokens und Keys) manuell zu generieren Als erstes müssen Sie Ihr „Application“ bei Twitter registrieren:

  1. Surfen Sie auf http://dev.twitter.com
  2. Loggen Sie sich mit dem Twitter-Account ein, mit dem auch das Script ausgeführt werden soll.
  3. Füllen Sie das Registrierungs-Formular aus. Application-Type: Browser, Callback-URL: leer lassen, Read&Write auswählen.
  4. Jetzt sehen Sie den Consumer Key und das Consumer Secret der Applikation.
  5. Klicken Sie auf „My Access Token“. Dadurch genrieren Sie das Access Token sowie das Access Token Secret für den aktuell eingeloggten User.

Das PHP Script sieht folgendermaßen aus (mit Absicht wurde hier auf OOP verzichtet, um PHP Einsteigern das Verständnis zu erleichtern):

#!/usr/local/bin/php5

<?php

// Tutorial: Twitter via OAuth mit PHP Bordmitteln
//   

echo "OAuth Tutorial";
echo "nn";

// OAuth Tokens
$accesstoken = "???";
$accesssecret = "???";

// OAuth Keys
$consumerkey ="???";
$consumerkeysecret="???";

// Beispiel: direct message an Simon_A_Frank
$APIurl = "https://api.twitter.com/direct_messages/new.xml";

// Parameter, bei direct messag user und text
$params="user=Simon_A_Frank&text=";
// doppelt codieren, sonst gehen Umlaute, Sonder- und Leerzeichen nicht
$params.=rawurlencode(utf8_encode("Hallöchen Simon wie geht's?"));
$reqmethod = "POST";

// Request bauen ...
$srequest="oauth_consumer_key=".$consumerkey;
$srequest.="&oauth_nonce=".rand(10000001,99999999);            
$srequest.="&oauth_signature_method=HMAC-SHA1";
$srequest.="&oauth_timestamp=" . time();        
$srequest.="&oauth_token=" . $accesstoken;
$srequest.="&oauth_version=1.0";
if ($params!="") {
    $srequest.="&".$params;
}    

// Alle Parameter müssen sortiert sein
$sr=explode("&",$srequest);
sort($sr);    
$srequestSorted=implode("&",$sr);    

// Basestring und Key:
$key=$consumerkeysecret."&".$accesssecret;      
$basestring=strtoupper($reqmethod)."&".rawurlencode($APIurl).
    "&".rawurlencode($srequestSorted);

// Signatur erzeugen
$sig=rawurlencode(base64_encode(hash_hmac('sha1', $basestring, $key, true)));    

// Signatur einfügen - für den Request muss diese
// scheinbar nicht sortiert sein    
$srequest.="&oauth_signature=$sig";

// Der Request ist fertig und sieht so aus:
echo "nRequest: $srequestnn";

// mit file_get_contents versenden
$opts = array('http' =>
    array(
        'method'  => $reqmethod,
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $srequest
    )
);
// Das Ergebnis ausgeben
$result = file_get_contents($APIurl, false, stream_context_create($opts));
echo "nResult:n" . $result;
echo "n... das war's!n";

?>
Dieser Beitrag wurde unter API, PHP, Programmierung, Social Networks, Twitter abgelegt und mit , , verschlagwortet. Setzen Sie ein Lesezeichen auf den Permalink.

3 Antworten auf Tutorial: Twitter API mit PHP-Bordmitteln

  1. Versehentlich hatte ich diesen Artikel die letzten Wochen auf “unsichtbar” gestellt, jetzt ist er wieder online!

  2. Adrian sagt:

    Vielen Dank! toll genau das was ich gesucht habe. Hätte ich auch selber schreiben können, aber so spar ich mir n Haufen Zeit. DANKE!

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>