PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘twitter curl’ tag

Verschiedene Möglichkeiten, mit PHP zu twittern

with 12 comments

Twitter lebt natürlich von manuell eingetippten Kommentaren, aber ab und zu ist es auch sinnvoll und nötig, automatisiert Tweets zu senden. Das geht dank der vielseitigen API auf verschiedensten Wegen, wovon ich einige hier vorstellen möchte.

Den Anfang macht eine Funktion von Fabien Potencier. Zur Nutzung dieser Funktion ist keine Extension oder Framework nötig, es werden nur PHP-Funktionalitäten verwendet:

function tweet($message, $username, $password)
{
  $context = stream_context_create(array(
    'http' => array(
      'method'  => 'POST',
      'header'  => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)).
                   "Content-type: application/x-www-form-urlencoded\r\n",
      'content' => http_build_query(array('status' => $message)),
      'timeout' => 5,
    ),
  ));
  $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);

  return false !== $ret;
}
tweet($message, $username, $password);

Eine sehr ähnliche Lösung umgesetzt mit Hilfe der PHP-Extension curl:

function postTweet($message, $username, $password)
{
	$url = 'http://twitter.com/statuses/update.json';
	$fld = http_build_query(array('status' => $message));
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password);
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $fld);

	$ret = curl_exec($ch);

	return false !== $ret;
}
postTweet($message, $username, $password);

Eine andere Methode ist die Verwendung der Zend-Framework-Klasse Zend_Service_Twitter.

$twitter = new Zend_Service_Twitter($username, $password);
$response = $twitter->status->update($message);

Natürlich kann man auch seine Twitter-Timeline via API abrufen, aber das könnt ihr euch selbst nachschauen wie das geht. Nagut, als Stichworte seien friendsTimeline() und userTimeline() gegeben 😉

Auf der Linux-Kommandozeile kann man natürlich auch auf Twitter zugreifen, hier beispielsweise die Abfrage der Freundes-Timeline:

curl -u username:password  http://twitter.com/statuses/friends_timeline.xml

Viele weitere Funktionen und Klassen findet man im API-Wiki von Twitter.

Edit: Auf vielfachen Wunsch hin habe ich einen weiteren Artikel verfasst über die Nutzung von Twitter mit OAuth.

Written by Michael Kliewe

März 3rd, 2010 at 9:15 am