Heute mal der Codeschnipsel um sein Twitter Profil Image mittels PHP zu aktualisieren:
Als erstes legen wir unsere Twitter-User Daten fest
1 2 3 4 | <?php $username = 'Twitter-User'; $password = 'Passwort'; ?> |
Wichtig ist, dass das zu speichernde Bild lokal auf dem Webspace vorhanden ist, da es sonst zu einem Problem kommt, welches ich noch nicht lösen konnte. Sollte das Bild denoch im Webliegen kann man dies mit folgenden Code auf dem Webspace speichern:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php // Bilder Speichern ob_start(); $fp = fopen("http://assets0.twitter.com/images/twitter_logo_header.png", "rb"); //Image lesen fpassthru($fp); fclose($fp); $file = ob_get_contents(); ob_end_clean(); $fp = fopen("./twitterlogo.png", "wb+"); //Image speichern fwrite($fp, $file); fclose($fp); ?> |
Nun wird das Bild vor jedem aufruf lokal gespeichert. Um das Bild nun zu Twitter zu schicken brauchen wir folgenden funktion:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php function account_update_profile_image($image, $user, $pw) { $args = array(); if(file_exists($image)) { $args['image'] = "@$image"; } if(isset($args['image'])) { $url = "http://twitter.com/account/update_profile_image.xml"; //PRINT_r($args); $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, "$url"); curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_POST, 1); curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args); curl_setopt($curl_handle, CURLOPT_USERPWD, "$user:$pw"); $buffer = curl_exec($curl_handle); curl_close($curl_handle); //PRINT_R($buffer); } } ?> |
Diese Funktion überprüft ob das Bild existiert und schreibt es in ein Array, um es letztendlich an den Twitter Account zu schicken.
Um die Funktion aufzurufen werden drei Parameter benötigt, der Bildername, der Username und das Passwort, wobei Username und Passwort aus den oben festgelegten Variablen Stammen.
1 | account_update_profile_image("twitterlogo.png", $username, $password); |
Folgende Beiträge könnten von Interesse für dich sein:
In diesem Blog schreibe ich über Bereiche aus der Entwicklung, Twitter, iPhone sowie über Mich.
Hi,
könntest du mal sagen, welche PHP-Version du nutzt?
Bei mir läuft der Code nicht, weder unter 5.2.6, noch unter 5.2.10 – es gibt offenbar einen Bug in PHP, der bei
$args['image'] = “@$image”;
Probleme macht: http://aspn.activestate.com/ASPN/Mail/Message/php-dev/3680378
Das Update wird durchgeführt, danach ist allerdings das Bild bei Twitter kaputt/leer.
Findest Du diesen Kommentar lesenswert?
0
0
Hallo Stefan,
Ich benutze die PHP Version 5.2.9.
Zu deinem Problem mit dem „leeren“ Bilder kann ich nur sagen, dass ich dieses Problem auch regelmäßig habe.
Dies liegt aber meines Erachtens nach an Twitter, da die etwas brauchen bis die Bilder auf allen Imageservern sind.
Das heißt, dass dein Bild eigentlich nach maximal einer Stunde angezeigt werden sollte.
Gruß Benni
Findest Du diesen Kommentar lesenswert?
0
0
Moin Benni,
vielen Dank für dein Codesnippet inzwischen, ich habe ich es auch zum Laufen bekommen. Ich benutze wie Du auch PHP 5.2.9. Auch ich habe allerdings das selbe Prob wie Stefan und das Profilbild bei Twitter scheint kaputt/leer. Aber ich werde dann jetzt mal gelduldig ne Stunde warten…
Gruß Jonas
Findest Du diesen Kommentar lesenswert?
0
0
Hey Jonas,
Funktioniert es bei dir mit den Bildern?
Gruß Benni
Findest Du diesen Kommentar lesenswert?
0
0