Buenas, la mayoría de las personas que viven en España conocen la famosa red social
tuenti. En el tuenti hay un chat que fue añadido hace un par de meses y que usa un servidor XMPP.

En este tutorial os voy a enseñar como conectarse al chat de tuenti usando la libreria xmpphp (
http://code.google.com/p/xmpphp/)
Un pequeño ejemplo:
<?php
include("xmpp.php");
$conn = new XMPPHP_XMPP('xmpp1.tuenti,com', 5222, 'username', 'password', 'xmpphp', 'tuenti.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->disconnect();
?>
Nos falta poner nuestro usuario y contraseña, pero el chat de tuenti usa un PLAIN METHOD para el login y por lo tanto solo debemos poner una clave que tiene la siguiente estructura:
idusuario@host?idusuario?cookietuenti
por ejemplo:
66171907@xmpp9.tuenti.com?66171907?NjYxNzE5MDc6YTdmYzdjY2Q9ZhVkYzA3ZDY5Y0QyZWFhNzJkYmQ2NDY1MTI2MTg2NjUwMA
Y todo esto codificado en base64, por lo tanto tenemos que editar la librería XMPP y en la linea 282 de XMPP.php sustituimos esto:
if ($this->password) {
$this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>" . base64_encode("\x00" . $this->user . "\x00" . $this->password) . "</auth>");
} else {
$this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'/>");
}
por esto:
$this->log->log("Attempting Auth...");
$id = reset(explode(':', base64_decode($this->password)));
$coo = base64_decode('eHh4eHh4eHhAeG1wcDkudHVlbnRpLmNvbQB4eHh4eHh4eABjb29raWU');
$coo = str_ireplace('xxxxxxxx', $id, $coo);
$coo = str_ireplace('cookie', $cookie, $coo);
$coo = base64_encode($coo);
$this->send("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>" . $coo . "</auth>");
Ahora para iniciar sesión en el chat necesitamos el cookie
sid de tuenti.com. Para no estar buscando el cookie en las opciones de nuestro navegador podemos escribir en la
barra de direcciones cuando estemos en tuenti.com:
javascript:alert(document.cookie); y copiamos la cookie
sid sin el punto y coma y el igual y nuestro codigo quedaria asi:
<?php
include("xmpp.php");
$conn = new XMPPHP_XMPP('xmpp1.tuenti,com', 5222, NULL, 'NjI5ODUwNDU6MDRiMDRmNjBlZTZmOGNhZGQxY2MxNzU3MGFmZDM2N2Y6MTI2MTk5NjU3Mg', 'xmpphp', 'tuenti.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('66171907', 'This is a test message!');
$conn->disconnect();
?>
Para enviar un mensaje:
$conn->message('66171907', 'This is a test message!');
Mas ejemplos y descargar la libreria:
http://code.google.com/p/xmpphp/Un saludo!