APIs de Redes Sociales

Publicado en

Como todos sabemos, las redes sociales crecen día a día y poseen información tanto personal, como de opiniones de los usuarios que las utilizan.

Con el fin de conocer dicha información para fines específicos y de promocionar marcas y servicios, actualmente muchas aplicaciones están siendo diseñadas de tal forma que tengan la capacidad de establecer una conexión con el API (Application Programming Interface) de dichas redes.

Para establecer dicha conexión, se debe seguir un proceso de autenticación y autorización de permisos mediante la implementación del protocolo oAuth (Open Authentication). Este protocolo permite que un usuario conceda acceso a un tercero (proveedor de servicio o aplicación) para que acceda a sus datos, sin tener que proporcionarle su usuario y contraseña.

En dicho proceso y al momento en que el usuario concede permisos a la aplicación, la red social proporciona un “token” que deberá ser guardado por dicha aplicación para poder realizar peticiones en nombre del usuario, tales como leer información personal, intereses, contactos o publicar nueva información.

La interacción entre las redes sociales y la aplicación es realizada mediante peticiones enviadas sobre el protocolo HTTPS. Dependiendo de la acción que se desee realizar pueden usarse peticiones de tipo GET, POST, PUT o DELETE. Todas las peticiones, independientemente si son para leer, escribir, editar o eliminar información, deben de incluir el “token” de acceso por medio del cual se valida la petición y se acepta o se rechaza de acuerdo a los permisos otorgados por el usuario. Es recomendable que el “token” de acceso sea enviado dentro del encabezado de las peticiones, sin embargo, también puede ser enviado como parámetro en la URL, ya que es protegido por el mismo protocolo HTTPS.

En seguida mencionaremos a modo personal y de acuerdo a nuestra experiencia, algunas características que hemos notado acerca de la API de Twitter, Facebook, YouTube e Instagram.

Twitter

Twitter es una de las redes sociales que por su naturaleza no hay muchas rescricciones de privacidad, es decir, la gran mayoría de usuarios tiene público su perfil y por lo tanto también sus tuits. Por esta razón, Twitter permite el acceso a toda esta información a través de su API. Las restricciones con las que se encuentran los desarrolladores es que existen límites de peticiones en un periodo de tiempo, es decir, existen intervalos de 15 minutos en donde se puede hacer un número máximo de peticiones. Cabe mencionar que estos límites son por usuario, no por aplicación, de esta forma cada usuario es controlado de forma independiente. Dependiendo del tipo de recurso que sea solicitado, existen dos tipos de restricciones principales: 15 peticiones cada 15 minutos y 180 peticiones cada 15 minutos. Adicionalmente, no se permite recuperar información histórica, es decir, si se ejecuta una búsqueda sólo es posible obtener información generada 7 días atrás como máximo.

En caso de exceder el número máximo de peticiones en un periodo de tiempo, se obtiene un código de respuesta en donde se provee información acerca del recurso restringido temporalmente y el tiempo de espera para que el recurso se encuentre nuevamente disponible. Otra particularidad de Twitter, es que cuenta con streaming, lo que permite obtener información en tiempo real sin restringir el número de peticiones por un periodo de tiempo. La versión actual del API de Twitter es la 1.1.

Facebook

En el caso de Facebook, por todas las restricciones de privacidad que protegen la información del usuario, no es posible acceder a datos protegidos a menos que ambos usuarios tengan una relación de ‘amistad’ en la red social. En caso contrario sólo puede obtenerse acceso sin restricción al nombre y al género de los usuarios. Sin embargo, si un usuario da consentimiento explícito a que un tercero acceda a su información de perfil, correo electrónico, gustos, intereses, amigos, eventos, datos de amigos, entre otros más; entonces la aplicación prácticamente no tendrá restricciones para ese usuario en particular.

El acceso a los mensajes públicos en Facebook es mediante su Open Graph que soporta también peticiones utilizando el Facebook Query Language. Facebook no tiene documentado el número máximo de peticiones en un periodo de tiempo o si las restricciones son por usuario, aplicación, dirección IP o la combinación de estos, sin embargo, si continuamente se envían peticiones hacia un recurso específico, con el tiempo se aprecia que se empieza a obtener menos información acerca del mismo.

Facebook cuenta con actualizaciones en tiempo real, con esto es posible subscribirse a ciertos recursos, como el muro de un usuario, y recibir notificaciones si hay cambios. Esta funcionalidad evita estar haciendo peticiones de forma periódica. Actualmente el Open Graph se encuentra en la versión 2.0 y de acuerdo a la documentación oficial de la misma, ya no será posible acceder a los mensajes públicos que actualmente están disponibles en su versión 1.0.

YouTube

En el caso de YouTube el acceso a los datos por medio de su API es muy similar a Twitter dado que los videos están disponibles públicamente. Las restricciones de acceso no son medidas por intervalos cortos de tiempo donde se permite un número máximo de peticiones, sino que es controlado por día. YouTube asigna diariamente un número de ’Unidades’ para cada aplicación (no es por usuario) y cada operación que se realiza tiene un costo de esas unidades, por ejemplo, subir un video representa el uso de mil 600 unidades que son restadas del total disponible del día.

Ahora bien, cuando se requiere realizar una búsqueda de videos, YouTube tiene una restricción que permite recuperar un máximo de 500 videos por búsqueda y no tiene una restricción de temporalidad, es decir, pueden recuperarse videos que fueron subidos recientemente o de meses atrás. Si la búsqueda devuelve más de 500 videos, YouTube sugiere que se utilicen otros criterios de búsqueda para refinar los resultados y de esta forma obtener la información deseada.

YouTube hace uso principalmente de XML para compartir sus datos y para enviar respuestas o mensajes de error, sólo algunos recursos pueden ser configurados para que la respuesta sea devuelta en formato JSON. La versión actual del API de YouTube es la 3.0.

Instagram

Instagram cuenta con una API con mayores limitantes desde el punto de vista de interacción, dado que a diferencia de las redes sociales descritas anteriormente, con Instagram no es posible subir contenido, esta acción solamente es permitida mediante su aplicación oficial. De forma adicional, se tiene una restricción de 5 mil peticiones por hora por “token” de acceso.

El API de Instagram solamente permite realizar búsquedas sobre mensajes que contengan etiquetas que existan en la red social. Este tipo de búsqueda se realiza sobre los mismos mensajes y sobre sus comentarios.

Comparación

Una de las redes sociales con más flexibilidad para obtener información es Twitter, dado que la información es en su mayoría pública y su API proporciona facilidades para ejecutar sin restricciones un gran número de acciones, por ejemplo, marcar un “tuit” como favorito o retuitearlo, seguir o dejar de seguir a un usuario, ver los mensajes de cualquier usuario que no tenga privado su perfil, entre otros más. Adicionalmente su “streaming API” es una ventaja sobre las demás redes sociales dado que provee información en tiempo real sin tener que subscribirse a un recurso como lo hace Facebook.

En el caso de Facebook existe mucha más información alrededor de los usuarios, como sus gustos, intereses, edad, escolaridad, y aunque toda esta información no es pública, es usada para el envío de publicidad dirigida hacia públicos muy específicos mediante su API de anuncios. Una desventaja de Facebook es que su búsqueda no ofrece la posibilidad de utilizar operadores lógicos para realizar búsquedas, a diferencia de Twitter que soporta: OR, AND, NOT y búsqueda en cuentas específicas.

El API de YouTube cumple bien sus funciones, sin embargo, tiene limitantes muy restrictivas dado que sólo pueden recuperarse como máximo 500 videos en una búsqueda y los operadores lógicos que proporciona (AND y OR) no funcionan de forma óptima en todos los casos. De forma adicional, a diferencia de las redes sociales anteriores, es necesario renovar su “token” de acceso de forma periódica.

Por último, la red social cuya API tiene más restricciones a nuestro parecer es Instagram, dado que no es posible publicar nuevo contenido o realizar comentarios sobre los mensajes existentes, básicamente sólo es posible leer información. Las búsquedas no contemplan el uso de operadores lógicos, y el término de búsqueda tiene que ser necesariamente una etiqueta válida existente en dicha red para que se obtengan resultados exitosos.

Experiencia y uso específico

En INFOTEC hemos estado desarrollando un nuevo producto al que denominamos SWB Social, el cual se conecta a las redes sociales mediante las técnicas aquí descritas. También es posible conectarse y explotar la información de más redes sociales en un tiempo relativamente rápido.

SWB Social escucha y entiende opiniones acerca de una organización, sus productos y servicios e inclusive de su competencia, identificando en la información sentimientos, influencia, geolocalización e idioma, entre mucha más información relevante que ayuda a tomar decisiones para mejorar los productos y servicios de una organización.

SWB Social es una herramienta que INFOTEC está liberando como open source, tal como lo ha venido haciendo con otros productos, como apoyo a las organizaciones e industria de TI en México. Conoce más en http://www.semanticwebbuilder.org.mx/SWBSocial

Bio

Francisco Jiménez Hernandez es desarrollador Sr. en INFOTEC desde hace 3 años. Ha trabajado como desarrollador en la Gerencia de Nuevos Productos y Servicios, dando mantenimiento a la herramienta Open Source de SemanticWebBuilder. Actualmente sus funciones como Coordinador de Desarrollo involucran la definición de funcionalidades de un nuevo producto de la familia SemanticWebBuilder denominado SWB Social.

Jorge Alberto Jiménez Sandoval es consultor Sr. en INFOTEC con 15 años de experiencia en arquitectura y desarrollo de productos de software, basados muchos de ellos en Web Semántica, mediante modelado ontológico de datos. Arquitecto y desarrollador líder de SWB Social.