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 de como funciona la libreria xmpphp:
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('cook', $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:
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();
Mas ejemplos y descargar la libreria: http://code.google.com/p/xmpphp/
Un saludo!