• Home
  • Google Plus
  • Facebook
  • Twitter
  • RSS-Feed

Blog Traffic Widget

BLOGTRAFFIC: Der Blog-Monitor

Das BlogTraffic-Info Blog

Twitter API 1.1 – So ruft man jetzt Daten mit PHP ab

18. Juni 2013 um 12:40 Uhr | Allgemein, BlogTraffic, Twitter | admin

Am 13.06.2013 wurde es auf vielen Webseiten und in vielen Apps ruhig um Twitter. Die API 1.0 wurde abgestellt und nur noch API 1.1 ist aktiv. Das größte Problem vieler Anwendungen zu dem Zeitpunkt ist, das man sich an der API 1.1 per OAuth Anmelden muß.

Wir rufen ja für die öffentlichen Profile auf Blogtraffic auch ein paar Daten über die API ab, wie die Follower/Friends Zahlen und die Anzahl der Tweets. Weil im System seit dem 13.06.2013 nur noch Nullen auftauchten, musste also die gesamte Routine umgeschrieben werden. Wie das funktioniert, erkläre ich kurz hier.

Benötigte PHP-Classes

Warum wir zwei Klassen brauchen, erkläre ich später.

1. Daten von der API 1.1 abrufen

Die wohl häufigste Funktion ist das abrufen von Daten. In der neuen API geht das nur noch über eine eigene App, die man zuerst bei Twitter erstellen muß. Dazu geht man zu http://dev.twitter.com/apps und erstellt dort eine neue App. (Wenn man schon eine erstellt hat, kann man die Daten von dort nutzen, ohne eine neue App zu erstellen).

Wenn man seine App über Twitter erstellt hat, bekommt man vier unterschiedlich Codes, die später in den PHP-Klassen verwendet werden müssen. Diese Codes realisieren die Anmeldeprozedur bei der Twitter-API 1.1.

Fangen wir an mit TwitterAPIExchange.php

<?php 
/** Die Klasse einbinden **/
require_once("TwitterAPIExchange.php"); 

/** Hier kommen die Codes der APP rein **/ 
$settings = array(
     'oauth_access_token' => "xxx",
    'oauth_access_token_secret' => "xxx",
    'consumer_key' => "xxx",
    'consumer_secret' => "xxx"
);

/** Perform a GET request and echo the response **/
/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/users/lookup.json';
$getfield = '?screen_name=[Twitter-User-Name]&count=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();

$result=json_decode($response, true);
echo "<img src=\"".$result[0]['profile_image_url']."\" />
";
echo "Follower: ".$result[0]['followers_count']."
";
echo "Folgt: ".$result[0]['friends_count']."
";
echo "Tweets: ".$result[0]['statuses_count'];

?>

Dieser Aufruf holt das Profil-Bild, die Follower, Friends und Anzahl der Tweets aus der JSON-Antwort. Bei [Twitter-User-Name] muß der echte Screenname bei Twitter benutzt werden, wie z.B. blogtraffic. Möchte man mehrere Screennamen abrufen, kann man die durch Komma getrennt eintragen (blogtraffic,twitterapi,tagesschau usw.). Wenn man mehrere User abruft, stecken die Daten dann später in $result[1], $result[2], $result[3]. Der Parameter count=1 muss dann entfernt werden!

Wer wissen will, welche Daten in einer JSON-Antwort stecken, kann sich das mit var_dump($result); ausgeben lassen. Man findet in der Response alle Daten, die Twitter über den User bereit stellt.

2. Tweets senden

Weil man zum senden von Tweets schon länger das OAuth-System benutzen muß, nutze ich hierfür die Klasse twitteroauth, mit der geht es am einfachsten. Die könnte sicher auch die gewünschten Daten abrufen wie unter Punkt 1, wollte aber schnell Resultate, also habe ich die nicht verändert und nutze die einfach weiter. Das Prinzip ist aber am ende das gleiche.

Einfachen Tweet senden mit twitteroauth

<?php
function postSignupToTwitter($message,$url){
require_once('twitteroauth/twitteroauth.php');
	$consumer_key = 'xxx';
	$consumer_secret = 'xxx';
	$access_key = 'xxx';
	$access_secret = 'xxx';
	$twitter = new TwitterOAuth (
               $consumer_key,  
               $consumer_secret, 
               $access_key, 
               $access_secret
               );
	$max = "80";
        $link = get_fazzt_url($url); /* URL verkuerzen */
	$bitlink=strlen($link);
	if (strlen($message) > ($max-$bitlink)) { 
  			$message = substr($message, 0, 78).'..';
	}
	$twitter->post('statuses/update', array('status' => 'Neues Blog: ' .$message.' '.$link));
}
postSignupToTwitter("dies ist ein Tweet","http://www.blogtraffic.de");
?>

Diese kurze Funktion sendet einen Tweet über die API, wir nutzen das zum posten, wenn eine neue Anmeldung im System durchgeführt wurde. Die Blog-URL wird durch unseren hauseigenen URL-Shortener gejagt und der Text wird verkürzt, damit die 140 Zeichen nicht überschritten werden (was in einem Fehler resultieren würde).

3. Fazit

Wenn man die beiden oben genannten Klassen benutzt, ist man auf der sicheren Seite mit der API 1.1. Die Klasse „twitteroauth“ ist sehr gut dokumentiert, während „TwitterAPIEXchange“ eher mit dürftigen Informationen zum Gebrauch daher kommt. Das wichtigste ist aber, das man die App über Twitter registriert, damit das ganze funktioniert.

Weiterführende Links (englisch)

Tags: , , ,

Für Kommentare geschlossen.

© BLOGTRAFFIC: Der Blog-Monitor

|

Interpretiert von DesignFalcon und mnfw. Powered by WordPress.