Accediendo a la API cerrada de Tuenti

5 Marzo 2010 35 Comentario(s) Comentar Trackback URI

Nota: Tenía escrita esta entrada en borradores antes de que Tuenti lanzara su API de forma cerrada y orientada a empresas que adquieran una licencia, tal y como se puede leer hoy en Barrapunto.

Que no me guste Tuenti no significa que no me guste trastear con las API que ofrecen los distintos servicios web. Pero Tuenti, a día de hoy (más de cuatro años después de su lanzamiento), sigue sin contar con una API pública que permita a los programadores desarrollar aplicaciones para la red social. Supongo que son los intereses económicos los que fuerzan a que (casi) todo el tráfico pase por la web, y, por tanto, aparezcan los anuncios y eventos patrocinados que financian el chiringuito. Como digo, no hay disponible una API pública, pero sí cuentan con una privada que brinda el servicio a la aplicación de Tuenti para el iPhone lanzada recientemente.

Hace un tiempo, @adrinavarro mostró a un pequeño grupo de conocidos un paper. En dicho texto se explicaba muy por encima el modo de funcionamiento (obtenido mediante pruebas) de la citada API privada, pero con el inconveniente de que no se conocía cómo se enviaba la contraseña del usuario a la hora del login. Por tanto, nada se podía hacer con la API.

Por aburrimiento, recordé el texto y me puse con ello (al igual que más gente) hasta conseguir poder usar la API. En cuanto al inconveniente del login, no fue un gran problema, ya que me dio por probar un método que conocía de antes (es lo que tiene haber trasteado anteriormente con la web :D). Lo que sí me supuso un problema fue el tener que jugar a adivinar (literalmente) los nombre de los métodos al no disponer de un iPhone con el que realizar pruebas.

De todo esto ha salido una class en PHP (para variar) que programé para realizar pruebas. Dicha class permite loguearse en Tuenti a través de la API y hacer uso de todos los métodos conocidos de la misma. Con dichos métodos se puede cambiar el mensaje de estado, obtener los perfiles de amigos, obtener fotos de los álbumes, etc.

Por comodidad he subido la class a GitHub junto con una lista de los métodos disponibles. En dicha lista sólo están los nombres de los métodos, más que descriptivos. Tampoco es plan de documentar la API haciendo el trabajo de una empresa con la que no guardo ninguna relacion, como es Tuenti.

Actualizado el viernes 12 de marzo: Ya ha pasado una semana, pero quería comentar algunas cosas:

Para empezar, no esperaba la repercusión que todo esto ha tenido, llegando incluso a las portadas de menéame y Barrapunto. Además, ha aparecido en multitud de tweets y en un puñado más de sitios de Internet. Parece que el tema de la API interesa, pero Tuenti no dice nada al respecto.

He acabado documentando por encima los métodos, y aún tengo pendiente ampliar la lista de métodos/parámetros gracias a unos datos enviados por @YouWoTMA. Podéis echarle un ojo al wiki de GitHub.

También recordar que hice la class (o clase :P) simplemente para realizar pruebas, no pensada para un uso real. Si alguien desea realizar alguna aplicación utilizándola es libre para hacerlo, pero que recuerde las posibles consecuencias (por parte de Tuenti, evidentemente).

Un último apunte: en los comentarios de esta entrada hay una conversación empezada por zenitraM de cómo conectar al chat de Tuenti por medio de Jabber.

Creo que no olvido nada, sólo decir que muchas gracias a los que habéis leido, comentado, votado o promocionado esto. :)


Comentarios

#1 GatoVolador el 5 Marzo 2010. Responder

Jojojojo, eres un crack. Esto va a menéame ya.

#2 rayko el 5 Marzo 2010. Responder

ZAS! EN TODA LA BOCA! :)

#3 YouWoTMA el 5 Marzo 2010. Responder

Yo tengo una lista de los métodos de el API, mándame un e-mail a el correo que he puesto arriba.

#4 Anonikat el 5 Marzo 2010. Responder

ajajaja muy buena.

#5 JumaX9 el 5 Marzo 2010. Responder

Juas! Brutal xD

#6 binnary el 5 Marzo 2010. Responder

Grande, que eres un grande! ;)

#7 zenitraM el 5 Marzo 2010. Responder

Tengo otra feature, aunque no se si te servirá para la API: como conectarse al chat.

Es tan facil como conectar cualquier cliente jabber estandar a xmpp2.tuenti.com con usuario <userid>@xmpp2.tuenti.com y contraseña la session_id que te da la API tras autenticar.

Tengo un iPod touch y manejo bien el Wireshark, si quieres que saque algun metodo más o algo dejame un email.

#8 Chinoataku el 5 Marzo 2010. Responder

Vaya peña más friki

#9 David el 5 Marzo 2010. Responder

REVOLUCIONARIO ESTE POST.. TUENTI NO SERA LO MISMO!!!


Eyy alguien sabe como se puede sacar más métodos.. Seguro que hay un monton mas.

Me interesa saber la forma para ir probando y así dsp publicamos todos los métodos encontrados ;)

Un saludo

#10 javi el 5 Marzo 2010. Responder

el chat funciona pero no es posible añadir amigos ni conocer si están conectados, al menos con el pidgin yo no lo he conseguido... alguna idea ??

#11 Zarovich el 5 Marzo 2010. Responder

Menudo fenómeno, y yo tratando de acceder a Tuenti a la fuerza hace unas semanas y de pronto vienes tu con esta sencilla maravilla.

@David para sacar métodos me imagino que estuvo dándole vidilla al maravilloso wireshark.

@zenitraM Yo ya intenté conectarme desde empathy a los servidores de Tuenti y no fui capaz, pero es que vi numerosas versiones de lo que habría que hacer para conectarse. Más que nada vi una en la que el nombre de usuario era idusuario&xmpp##.tuenti.com%idusuario%identificadorDeSesion.

Voy a probar con tu método y con el método que tengo para autenticar con Tuenti... Si todo esto consigo que funcione sería viable hacer un plugin para telepathy (para empathy) y otro para pidgin para darles soporte de conexión a Tuenti.

#12 zenitraM el 5 Marzo 2010. Responder

@Zarovich Lo he conseguido desde Adium en Mac simplemente poniendo eso, el userID @ el servidor que pasa la API de Tuenti, la sessid como contraseña y como recurso simplemente "tuenti". Así es como lo hace al menos la app del iPhone (la cual usa Jabber puro a diferencia de la web que va por una pasarela http).

El tema es que no se como va el tema de los usuarios conectados, que no aparecen (se ve que las listas estan implementadas de alguna manera diferente a la Jabber),pero enviar y recibir mensajes si se puede.

#13 kamikaze_pum el 5 Marzo 2010. Responder

@zenitraM, el problema, es que no encuentro el session_id

#14 andreums el 5 Marzo 2010. Responder

Gracias por la API.

La verdad es que va bastante bien.
El sguiente paso es hacer métodos dentro de la clase tuentiAPI con los métodos ya conocidos, y sus parámetros.

Ánimo, dentro de poco vamos a poder integrar APIs de Twitter, Tuenti, Facebook ... dentro de nuestras webs.

Saludos

#15 David el 5 Marzo 2010. Responder

Estoy intentando lograr que funcione, pero algunos métodos no logro que funcione correctamente. Si eso alguien que suba algun ejemplo como publicar en el muro con php...Yo es que no lo logro ni de coña.


Alguien sabe como probar la aplicación de iphone en wikidows.. a mi si entro por los programas que emulan iphone me sale la versión.

#16 Guillermo el 5 Marzo 2010. Responder

La integración con la Plataforma Social TuEntidad.es de Tuenti (como sólo-lectura) está cada vez más cerca.

#17 Alex Parra el 5 Marzo 2010. Responder

Eres un asco :D xDD joo ahora ya eres el niñocrack?

#18 curioso el 5 Marzo 2010. Responder

Ya estás autorizado a utilizar la API para esos fines?

#19 zenitraM el 6 Marzo 2010. Responder

#13 kamikaze_pum: es el sid en las cookies al hacer login en Tuenti. Cambia cada vez que haces login

#20 kamikaze_pum el 7 Marzo 2010. Responder

#19 zenitraM: Gracias, lo hice, pero no me salían los contactos en el programa

#21 Pedro el 15 Marzo 2010. Responder

Hola, soy incapaz de obtenerlos "albumId" de un usuario, en la respuesta de getUserAlbums no está el "albumId".

¿falta un método o me estoy volviendo loco?

#22 scromega el 15 Marzo 2010. Responder

#21 Pedro: Hola. Yo también me volví loco con el tema de las fotos. Con getUserAlbums se obtienen los álbumes, que en la mayoria de los usuarios son solo dos: "uploaded" y "tagged". El problema que yo me encontre es que en el método getAlbumPhotos dice que necesita el parametro "albumId" cuando en realidad el parametro es "album_id".

De todas formas te envio por email un codigo de ejemplo que muestra las fotos de los respectivos álbumes de cada usuario.

#23 Voyager el 16 Marzo 2010. Responder

me podrias enviar a mi tambien el ejemplo de los albumes? Gracias por adelantado

#24 zenitraM el 16 Marzo 2010. Responder

#20 kamikaze_pum: Si, es normal. No aparecen, pero si te mandan un mensaje te sale y puedes contestar

#25 javiramos el 24 Marzo 2010. Responder

Si no te importa pasarme el email a mi con el codigo tambien scromega te lo agradeceria.

Brillante lo que has hecho.

Gracias de parte de todos :D

#26 Pepegalta el 17 Abril 2010. Responder

Para los que tengan dudas de como pasar parametros:

Hay que definir un array con los valores de los prametros, y el nombre del parametro en el array. Por ejemplo para consultar un album de fotos:

$album[album_id]='1234567_12345678';
$r = $con->request('getAlbumPhotos',$album, array());

#27 neuxb el 3 Mayo 2010. Responder

Hola, he estado intentando ver el Album de Fotos con getAlbumPhotos y me ha sido imposible, ¿alguna forma de saber el id del album?, porque haciendo un getUserAlbums solo sale name la fecha y nada mas; por cierto a la funcion getUserAlbums se le puede llamar con el parametro user_id para ver el album de un amigo.
Un saludo.

#28 neuxb el 3 Mayo 2010. Responder

Hola de nuevo, a la pregunta anterior me respondo yo mismo, si al llamar a la propiedad getUserAlbums solo nos muestra el campo name pues el valor de album_id es el valor de ese campo, me explico, upload o name (despistao que va uno)
Aprovecho para dar las gracias a scromega por la class, ya que funciona a las mil maravillas para comunicar con la API, ¡buen trabajo!

#29 el_seby el 11 Mayo 2010. Responder

Hola a todos, la verdad es que es una suerte que haya gente luchando por la causa de poder integrar todas las redes sociales en nuestras aplicaciones, webs...

Estoy adaptando la API para Android...pero tengo un problema para poner un mensaje en el muro:
Cuando el texto que quiero introducir lleva caracteres con acento me da error. El probado con la clase PHP de scromega y pasa lo mismo...

Ya he probado con URLEncode y a pasar el texto \uXXXX pero en ambos casos en mi muro aparecen los textos con la codificación, es decir, la API de tuenti no interpreta que \u00e1 es á.

¿Alguien sabe como solucionar esto?
PD: Si el texto no tiene acentos el mensaje se publica perfecmente.

Gracias por la API!!

#30 paju el 19 Mayo 2010. Responder

Cual es la licencia de la clase PHP?

#31 hgc2002 el 20 Mayo 2010. Responder

Alguien sabe como listar los "buzones" de mensajes? Sólo me sale el thread id del inbox y allí claramente faltan mensajes que se ven en la pagina web.

Saludos y enhorabuena por este genial descubrimiento!

#32 scromega el 20 Mayo 2010. Responder

#30 paju: Eso es algo que tengo pendiente de mirar, pero así a bote pronto te digo: puedes hacer con ella lo que quieras mientras no le des un uso comercial y me reconozcas como autor. Lo que vendría siendo una Creative Commons Attribution-NonCommercial (¿Alguien sabe si hay alguna licencia de software que diga esto mismo? ¡Gracias!)

PD: Tengo que actualizar la entrada y editar el resto de comentarios, prometo hacerlo pronto! :$

#33 afyarritu el 29 Mayo 2010. Responder

#7 zenitraM: Hola soy un inutil en estos temas pero me interesaría mucho si me puedieses explica como poner el tuenti chat en el Empathy en el que pueedo configurar cuentas de jabber.Ya lo he hecho con el de facebook...gracias y si puede ser preferiría me respondieses a mi email!gracias por tus aportaciones

#34 neuxb el 13 Junio 2010. Responder

el_seby, hola mirate la codificacion, sencillamente lo puedes resolver con utf8_encode() o utf8_decode(), leelo en php.net.

#35 el_seby el 16 Junio 2010. Responder

#34 neuxb: Gracias, lo revisaré.

Comentar


 No sera publicado. Para el Gravatar.
 Opcional.

  Introduce los caracteres de la imagen en el campo.
 Recordar tus datos para futuras visitas.


Trackbacks

www.meneame.net el 5 Marzo 2010.

Reventada la API privada de Tuenti
Hoy saltaba la noticia (link) de que Tuenti ha lanzado una API privada para el desarrollo de aplicaciones para móviles y de otros tipos, previa adquisición de una licencia. Pues bien, dicha API ha sido "reventada" y parte de sus...

Bitacoras.com el 5 Marzo 2010.

Información Bitacoras.com
Valora en Bitacoras.com: Nota: Tenía escrita esta entrada en borradores antes de que Tuenti lanzara su API de forma cerrada y orientada a empresas que adquieran una licencia, tal y como se puede leer hoy en Barrapunto. Que no me guste Tuenti no sign...

el chat el 24 Marzo 2010.

el chat
Es ist mitunter schon ganz witzig was auf manchen Seiten zum Thema so geschrieben steht. Der Markt an Informationsfluten scheint irgendwie immer weiter mit Undurchsichtigkeiten zu ueberlaufen und die Suche nach wirklich guten Infos darueber eher zu erschweren. Die Beitraege auf dieser Seite koennen sich aber durchaus sehen lassen. Spitze! Weiter so!