Z tohoto důvodu jsem potřeboval vyřešit automatické přidávání zpráv na Twitter při publikaci článku.
Twitter zpřístupňuje některé své funkce prostřednictvím API (Application Programming Interface). Je tak možno implementovat funkce do svých vlastních aplikací, webových stránek apod. Ty pak s API Twitteru komunikují protokolem HTTP.
Po prostudování API, jehož popis je na stránkách twitteru k dispozici, mi jako nejjednodušší přišlo využití metody Status/update.xml.
Podstatou je odeslání textu/zprávy metodou HTTP-POST na stránky Twitteru. Před odesláním je nutno autorizovat uživatele. Odpovědí serveru je XML soubor, který obsahuje potvrzení o doručení zprávy a některé další informace (viz API).
Publikační systém blogu je napsán v PHP, je proto zcela logické implementaci metody Status/update.xml napsat rovněž v PHP. Výsledná funkce, která zapouzdřuje celý proces komunikace vypadá následovně:
function Twitter_UpdateXML($sTwitterLogin, $sTwitterPass, $sText){
$host = 'twitter.com';
$path = '/statuses/update.xml';
$_nl = "\r\n";
$timeout = 60; // 60 second timeout
$params = 'status='.urlencode(utf8_encode($sText));
$response = '';
$fp = fsockopen($host, 80, $errno, $errstr, $timeout);
if ($fp) {
fputs($fp, 'POST '.$path.' HTTP/1.1'.$_nl);
fputs($fp, 'Host: '.$host.$_nl);
fputs($fp, 'Authorization: Basic '.base64_encode($sTwitterLogin.':'.$ sTwitterPass).$_nl);
fputs($fp, 'Content-type: application/x-www-form-urlencoded'.$_nl);
fputs($fp, 'Content-length: '.strlen($params).$_nl);
fputs($fp, 'Connection: close'.$_nl);
fputs($fp, $_nl);
fputs($fp, $params.$_nl);
fputs($fp, $_nl);
while (!feof($fp)) {
$response .= fgets($fp, 1024);
}
fclose($fp);
}else{
$response = “<status><text>Error:$errno - $errstr</text></status>”;
}
$responseParts = explode($_nl.$_nl, $response);
return $responseParts;
}
Zdrojový kód funkce v PHP si můžete stáhnout zde : twitter_update_xml.txt