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.

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

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

Kommentar verfassen