Tutorial: Twitter API mit PHP-Bordmitteln – So geht’s mit POST und GET

In den letzten Wochen hatte ich in einem kurzen Tutorial beschrieben, wie man mit PHP-Bordmitteln ohne SDKs und Frameworks eine Twitter direct message bzw. Tweets verschicken kann. Wie John richtig in einer Mail geschrieben hat geht mein Code nur mit method=“POST“. Manchmal ist aber von der Twitter API ein GET vorgeschrieben, z. B. wenn man auslesen möchte, welchen andere Twitter-User einen erwähnt haben (mentions). Deshalb hier die Info, wie es auch mit GET geht:

#!/usr/local/bin/php5

<?php

// Tutorial: Twitter via OAuth mit PHP Bordmitteln

echo "OAuth Tutorial";
echo "nn";

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

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

// 1. Beispiel direct message an Simon_A_Frank
// $APIurl = "https://api.twitter.com/direct_messages/new.xml";
// $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";

// 2. Beispiel: Einen Tweet versenden
// $APIurl = "http://api.twitter.com/1/statuses/update.xml";
// $params ="trim_user=true&status=".
//     rawurlencode(utf8_encode("@Simon_A_Frank ok, wunderbar!"));
// $reqmethod = "POST";

// 3. Beispiel: Mit method=get Mentions lesen
$APIurl = "http://api.twitter.com/1/statuses/mentions.xml";
$params ="trim_user=true&count=5";
$reqmethod = "GET";

// 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 nicht sortiert sein    
$srequest.="&oauth_signature=$sig";

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

// POST oder GET?
if ($reqmethod=="POST") {
    $opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $srequest
        )
    );
} else
{
    $opts = array('http' =>
        array(
            'method'  => 'GET'
        )
    );
    $APIurl=$APIurl."?".$srequest;    
}

// mit file_get_contents versenden
$result = file_get_contents($APIurl, false, 
 stream_context_create($opts));
// Das Ergebnis ausgeben
echo "nResult:n" . $result;
echo "n... das war's!n";

?>

P.S.

Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne  – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de

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

3 Antworten zu Tutorial: Twitter API mit PHP-Bordmitteln – So geht’s mit POST und GET

  1. Marc sagt:

    Moin Moin, machst Du nochmal was für die API v2 fertig ? 🙂

    • Simon A. Frank sagt:

      Danke der Nachfrage, aber leider ist das nicht geplant, ich habe es leider seit vielen Jahren nicht mehr geschafft, neue Artikel für diesen Blog zu schreiben, da mir leider die Zeit fehlt!

  2. Sorry, dieser Artikel war versehentlich einige Tage offline.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.