jueves, 13 de julio de 2017

Las APIs En Redes Sociales: El Portal De Internet Al Mundo Real

Las API de las redes sociales han crecido mucho desde que Google lanzó la primera versión de su API de Youtube en mayo de 2008, y desde que Facebook lanzó la primera versión de su API Graph en abril de 2010. Hoy, estas API te dan la oportunidad de buscar en las plataformas de redes sociales: posts, usuarios, canales y data demográfica. También te dejan crear tu propio servicio o conocer más sobre tu base de usuarios.
En este artículo, vamos a examinar las formas en las que podemos utilizar algunas de las API en las redes sociales populares:
  • Facebook (API Graphic y Marketing)
  • Instagram
  • Twitter
  • YouTube
  • Pinterest
También vamos a discutir sus limitaciones y exploraremos algunas de sus herramientas más útiles que se encuentran disponibles con estas API. Luego, en el artículo, echaremos un vistazo a cómo integrar estas API a cualquier aplicación de Rails.
Las API en Redes Sociales: El Portal de Internet al Mundo Real
Usa una API de una red social para conocer a tus usuarios mejor de lo que se conocen ellos mismos"
Me voy a concentrar en la API de una red social a la vez, para explicar sus capacidades, limitaciones y herramientas disponibles. Habrá una matriz con las diferentes API y sus propiedades para hacer una mejor comparación más adelante en el artículo.
Para poder usar las API, primero debes instalar una aplicación que crea preguntas en nombre de tu aplicación con peticiones basadas en OAuth. Los usuarios autenticarán su información en tu aplicación y luego de esto, puedes tener acceso a su data con el identificador de acceso de usuario que dé como resultado.

Facebook

El desactualizado FQL (Facebook Query Language) usado para un lenguaje de preguntas similar al SQL, el cual podría ser usado para acceder a toda la data de Facebook.
Facebook lanzó la primera versión de su API Graph en abril de 2010. La versión más reciente, al momento de escribir este artículo, es la 2.6, la cual se introdujo el 12 de abril de 2016. Es una API de bajo nivel de base HTTP que puede ser usada para preguntar por data, crear posts y hasta crear campañas publicitarias automatizadas.

Herramientas

El Explorador API Graph es la herramienta más usada comúnmente al trabajar con la API de Facebook. Te deja ejecutar las preguntas de la API Graph en el buscador, al igual que examinar los resultados: puedes usar uno de los bloques de acceso de tu aplicación o crear uno en el momento con scopes seleccionados.

Habilidades

La API Graph es una API con base REST que te permite crear, actualizar y eliminar objetos de cada petición HTTP en algunos nodos.

Token de Acceso

Para ejecutar preguntas a la API Graph, necesitas un token de acceso el cual se obtiene en cuanto un usuario autorice de manera exitosa en tu aplicación.

Scopes

Los scopes determinan qué acciones se pueden realizar en nombre del usuario. La aplicación pide ciertos scopes cuando un usuario se autoriza en una aplicación. El scope publish_actions, por ejemplo, permite que una aplicación publique posts de parte de un usuario. El scope de correo electrónico permite que la aplicación lea el correo electrónico del usuario. Una revisión completa de todos los scopes la puedes encontrar en la documentación om.
Ciertos scopes como el publish_actions o ads_management requieren una revisión de parte de Facebook antes del lanzamiento de la aplicación.

Ejemplo

Para demostrar cómo funciona la API Graph, te mostraré cómo crear, actualizar y eliminar posts con la API.
Para obtener tus propios posts, puedes ejecutar la pregunta GET /me/posts. El resultado será una cadena de caracteres JSON con una lista de posts, incluyendo su mensaje, created_time, e identificación. Puedes usar el parámetro pretty o un formateador JSON para que la respuesta no se vea tan desordenada.
Para obtener más data sobre tus posts, puedes extender la pregunta con campos como parámetros de preguntas. Por ejemplo, la pregunta me/posts?fields=reactions, picture te dará la foto y reacciones del post.
Para crear un post, puedes enviar una acción POST a edge feed, ej. me/feed, con parámetros como message: hello world. La API Graph regresará un objeto JSON con la ID del post que creaste. Puedes ver el post en la dirección http://facebook.com/[post_id].
Para actualizar un post, puedes enviar una solicitud POST al nodo del post con los campos para ser actualizados como parámetros; ej., /[post_id] y parámetros como Message: lorem ipsum. Se regresará un indicador exitoso con valor de verdadero o falso.
Para eliminar un post puedes, simplemente, hacer una petición de ELIMINAR al nodo con el post ID (ej., /[post_id]). El valor de regreso será un objeto JSON con un valor exitoso de verdadero o falso.
Una revisión completa de todos los nodos y acciones está disponible en la Referencia API Graph.

API de Marketing

La API de marketing merece una mención especial ya que es una de las herramientas más poderosas de manejo de publicidad en Facebook y obtiene una percepción desde adentro de la publicidad, a través de tu aplicación.
Funciona de la misma manera que otros métodos de API Graph. Sin embargo, necesitas el scope ads_managementpara obtener acceso a las publicidades del usuario. Facebook también necesita revisar tu aplicación antes de que puedas publicarla.

Prueba

Una vez que creas tu aplicación, está en modo desarrollo y automáticamente se hace visible en el tablero de tu aplicación (ej., https://developers.facebook.com/apps/).
En modo desarrollo, solo administradores, desarrolladores y probadores tienen acceso a tu aplicación. Puedes agregar probadores y administradores y la sección de roles del tablero de tu aplicación.

Proceso de Revisión

Cuando se agregan ciertos permisos, Facebook necesita revisar tu aplicación antes de que puedas publicarla. El proceso de revisión está definido por este set de guías.
Para poder ingresar ciertos ítems a revisión, solo tienes que agregarlos a la sección de revisión del tablero de tu aplicación. Facebook te guiará a través del proceso de revisión y te alertará una vez que tu aplicación sea aprobada.

Limitaciones y Métodos Alternativos

Limites de Tasa

Una aplicación puede realizar 200 llamadas por hora por cada usuario en agregado. Si llegas a ese límite, tus llamadas API darán como resultado un error.

Buscando Posts en Facebook

Facebook restringe la búsqueda de posts y etiquetas en Facebook a través de la API Graph y FQL. Sin embargo, puedes usar la API Google Search para buscar posts públicos en Facebook y luego usar la identificación-post en la URL para tomar más información sobre posts específicos a través de la API Graph.

Obtener Data de Público Personalizado

Percepción de Público en Facebook es una herramienta de búsqueda importante para aprender más sobre un público basado en intereses, demografía, u otros atributos (ej., una colección de direcciones de correo electrónico).
Sin embargo, no he encontrado una manera de crear automáticamente una percepción de público a través de la API publicitaria. Déjanos saber en los comentarios si tienes algunas ideas creativas o sugerencias para esto.

Instagram

La API de Instagram fue lanzada en abril de 2014 y te permite construir aplicaciones que analizan los posts de los usuarios y los ayuda a manejar sus propios posts.

Herramientas

Ya que la consola API de Instagram fue eliminada al momento de escribir este artículo, te recomiendo usar Apigee con el propósito de probarlo en tu buscador.

Habilidades

La API de Instagram es una API basada en REST. Todos sus puntos de salida se describen en su documentación oficial.

Token de Acceso

Para ejecutar las preguntas a la API de Instagram, necesitas un token de acceso que se obtiene tan pronto como el usuario autoriza en tu aplicación. Para que un usuario reciba un token de acceso, él o ella debe ser dirigido a la autorización URL de tu aplicación. El servidor redirigirá al usuario después de autorizar tu aplicación y posteriormente podrás leer el token.

Scopes

Tu aplicación puede pedir permisos diferentes. Por ejemplo, lo “básico” te limita a leer la información de perfil al igual que fotos e imágenes de un usuario. “public_content” te permite leer cualquier perfil público y material multimedia en nombre de un usuario.

Ejemplos

Para demostrar cómo funciona la API de Instagram, mostraré ejemplos basados en el punto de salida de la multimedia https://api.instagram.com/v1/media/popular.
Este punto de salida regresa la multimedia popular actual de Instagram, si se pasa un bloque de acceso como parámetro. El resultado será una cadena de posts JSON que contienen, por cada uno, su identificación multimedia, un link a su imagen, likes, comentarios, el usuario que lo publicó y algunos otros atributos.
Puedes usar apigee para probar y descubrir más sobre los puntos de salida de la API y sus parámetros.

Pruebas

Cada nueva aplicación que ha sido creada en la plataforma Instagram comienza en modo sandbox. Este es un ambiente completamente funcional que te permite probar los puntos de salida API disponibles públicamente, antes de que presentes tu aplicación para ser revisada.
Para probar tu aplicación, solo debes crear una versión de etapas y ejecutar todas las preguntas a través de esa versión en vez de la versión en vivo que pasó por la revisión.

Proceso de Revisión

Aplicaciones en el modo sandbox puede usar cualquier punto de salida de API, pero éstas están restringidas a un número limitado de usuarios y material multimedia. Es un gran mecanismo para el desarrollo y pruebas de una aplicación.
Para lanzar en vivo y acceder a todo el contenido de Instagram, necesitarás pasar tu aplicación por una revisión. Una vez ha sido revisada, solo podrás pedir scopes para usuarios para quienes fue aprobada tu aplicación.

Limitaciones y Métodos Alternativos

Análisis Demográfico

Al momento de escribir este artículo, no había manera de obtener información sobre la edad de un usuario público, sexo o intereses, porque Instagram no te da esa información.
Para obtener la data de la información demográfica sobre los seguidores o una lista de usuarios de Instagram, necesitarías iterar sobre cada uno de ellos e intentar determinar la edad y sexo, basado en sus seguidores o la información en sus biografías.
Una gran solución de data para este problema podría ser un servicio muy valioso para algunas compañías.

Limites de Tasa

Todos los límites de tasa en la plataforma de Instagram son controlados por un bloque de acceso en una ventana deslizante de 1 hora. Las aplicaciones en vivo tienen límites de tasa más altos que las aplicaciones en Modo Sandbox. El límite de tasa global para una aplicación en vivo es, actualmente, de 5.000 llamadas por hora.

Twitter

La API de Twitter fue lanzada en septiembre de 2006. Es una API pública REST que provee acceso leído y escrito a la data de Twitter. La autenticación se realiza usando OAuth. Las respuestas son en formato JSON.

Herramientas

Twitter tiene una herramienta de consola API impulsada por apigee, que puede ser usada para probar las peticiones en el buscador.

Habilidades

La API REST te permite obtener los tweets, seguidores y personas a quien sigue un usuario. También puedes buscar las etiquetas en otros tweets.

Token de Acceso

Twitter te permite crear aplicaciones que los usuarios puedan autenticar al regreso del token de acceso. El modelo de autenticación es OAuth.

Scopes

Hay solo dos permisos que deben ser establecidos en la página de configuración de la aplicación: Solo Lectura, y Lectura y Escritura. El último de estos te deja crear tweets y ejecutar otras acciones de los posts de parte del usuario.

Ejemplos

Para demostrar el uso de la API de Twitter, voy a tomar los tweets autorizados por el usuario. El resultado es una cadena de caracteres JSON con las imágenes, favoritos, retweets, las url, fecha de creación y otros atributos de los tweets. Utiliza Apigee para probar y descubrir más sobre los puntos de salida de la API y sus parámetros.

Pruebas y Proceso de Revisión

Actualmente no hay un proceso de revisión o modo de prueba disponible para la API de Twitter.

Limitaciones y Métodos Alternativos

Análisis Demográfico

Actualmente no hay una manera fácil de obtener data demográfica desde los seguidores de Twitter de un usuario. El acercamiento en fuerza bruta sería revisar cada seguidor e intentar obtener la data a través de sus biografías y cuentas asociadas de otras redes sociales.
Después, puedes hacer suposiciones basadas en la data recolectada de los seguidores a través de un análisis de data. Otra manera de obtener más información es a través de la plataforma API de proyecto pago de Twitter llamado GNIP. Entre otras cosas, te permite crear un público y obtener más información sobre aquellos a través de la API. La API está actualmente en estado BETA.

Limites de Tasa

Twitter tiene límites de tasa por cada usuario y en base de 15 minutos. Si tu aplicación tiene tokens múltiples, puedes alternar tokens para operaciones públicas, para así evitar llegar al límite.

YouTube

La API de Data de YouTube fue lanzada en enero de 2013. Te permite agregar características de YouTube a tu aplicación, buscar contenido y analizar la demografía del canal de YouTube. Es un OAuth, la API REST basada en tokens, la cual regresa respuestas JSON.

Herramientas

El explorador de la API te permite hacer pruebas de peticiones no autorizadas al igual que autorizadas. Puedes ejecutar peticiones desde tu buscador a los puntos de salida proporcionados.

Habilidades

Entre otras cosas, puedes trabajar con actividades, chats, transmisiones en vivo, canales, vídeos y suscripciones. La mayoría de los puntos de salida requieren que autorices con una cuenta de YouTube.

Token de Acceso

La API de Data de YouTube apoya el protocolo OAuth 2.0 para autorizar acceso a la data de usuario privado. Una vez que un usuario ha sido autorizado en tu aplicación, será redirigido a tu aplicación donde el token de acceso debería ser guardado.
Para poder usar la autorización OAuth 2.0, primero necesitas obtener las credenciales de autorización en la consola de desarrollador de Google.

Scopes

La API de Data de YouTube actualmente trabaja con los siguientes scopes:
  • Fuerza SSL - Maneja tu cuenta de youtube, pero solo con una conexión SSL.
  • Por defecto - Maneja tu cuenta de YouTube. Este scope es funcionalmente idéntico al scope youtube.force-ssl pero no requiere una conexión SSL.
  • Solo Lectura - Mira tu cuenta YouTube.
  • Subir - Subir vídeos a YouTube y manejar tus vídeos de YouTube.
  • Auditar un Canal Compañero - Retira información que utilizan las Redes Multicanal como criterio de aceptación o rechazo de un canal en su red.

Ejemplos

Como ejemplo de uso de la API de Data de YouTube, muestro las siguientes preguntas de petición para vídeos con “codificación” en su título y descripción:
https://www.googleapis.com/youtube/v3/search?part=snippet&q=coding&key={YOUR_API_KEY}
El resultado es un objeto JSON que contiene el título, descripción, videold y channelld. Puedes usar el último de estos para saber más sobre el canal.
El parámetro part se requiere para cualquier petición de API que regresa alguna fuente. El parámetro identifica propiedades de recurso que deberían estar incluidas en una respuesta API. Por ejemplo, una fuente de vídeo tiene las siguientes partes: snippet, contentDetails, fileDetails, player, processingDetails, recordingDetails, estadísticas, estatus, sugerencias, topicDetails.
El resto de los parámetros, excepto la llave API, difiere de la llamada por llamada. Lee más sobre esto en la guía de referencia API.

Pinterest

La API de Pinterest fue lanzada inicialmente en abril de 2015. Es una API RESTful, la cual proporciona acceso a la data del usuario de Pinterest, como sus tableros, seguidores y más. La API de Pinterest usa OAuth y permite leer y escribir permisos cuando se interactúa con el contenido del usuario.

Herramientas

Como los otros, Pinterest proporciona una API Explorer para probar sus puntos de salida y ejecutar preguntas a estos. Puedes ver sus herramientas aquí.

Habilidades

La API REST de Pinterest te permite crear pins, tableros y hacer preguntas a la data Pinterest con OAuth.

Token de Acceso

Pinterest usa OAuth 2.0 para autenticar peticiones entre tu aplicación y tus usuarios. Todas las peticiones se deben hacer sobre HTTPS.

Scopes

Los Scopes determinan lo que una publicación puede hacer de parte de un usuario. Pinterest usa los siguientes scopes:
  • none (debe conocer al identificador) Usa el método GET en el perfil del usuario, tablero y detalles Pin, y los Pin en el tablero.
  • read_public: Usa el método GET en el Pin de un usuario, tablero y likes.
  • write_public: Usa los métodos PATCH, POST, y ELIMINAR en los Pins y tableros del usuario.
  • read_relationships: Usa el método GET en los seguidores y a quien sigue el usuario (en tableros, usuarios e intereses).
  • write_relationships: Usa los métodos PATCH, POST, y ELIMINAR en los seguidores y a quien sigue el usuario (en tableros, usuarios e intereses).

Ejemplos

Para demostrar el uso de la API de Pinterest, voy a demostrar cómo leer los últimos pins del usuario:
https://api.pinterest.com/v1/me/pins/?access_token={your_token}&fields=id,link,note,url,counts,board,created_atregresará los pins del usuario con su identificación, link, nota, url, likes y repins.

Pruebas y Proceso de Revisión

Las aplicaciones están inicialmente en modo desarrollo y deben ser presentadas para revisión antes de su lanzamiento en modo producción.

Limitaciones y Métodos Alternativos

Análisis Demográfico

No hay una manera común de obtener data demográfica de un tablero. Sin embargo, puedes intentar obtener los seguidores e información de estos de la biografía en los tableros, al igual que los links a otras cuentas de redes sociales. Una gran solución de data sobre las conexiones comunes de los usuarios también es una posibilidad.

Búsqueda de Pins

Actualmente, no hay manera posible de buscar pins con ciertas etiquetas o palabras clave a través de la API. Puedes ignorar esa limitación al usar la API de Google Custom Search para buscar resultados solo en los pins de Pinterest y recolectar la identificación del pin a través de la URL. La identificación puede posteriormente, ser usada para obtener información sobre el Pin a través de la API.

Limites de Tasa

Cada aplicación (con una identificación de aplicación única) se le permite 1,000 llamadas por cada punto de salida por hora por cada token de usuario único.
Cada respuesta API regresa un encabezado que te da una actualización sobre límites de tasa. X-Ratelimit-Limites el límite de tasa para esa petición en específico y X-Ratelimit-Remaining es el número de peticiones que te quedan en una ventana de 60 minutos.
Si excedes tu límite de tasa para el punto de salida dado, obtendrás un código de error 429 “Too many requests” .

Comparación de APIs de Redes Sociales

VersionOAuthFormatDemographics
Facebookv2.6
Initial Release: April 2010
OAuth 2REST requests with JSON responsesSupported
Instagramv1
Initial Release: April 2014
OAuth 2REST requests with JSON responsesNot supported
Twitterv1.1
Initial Release: September 2006
OAuth 1REST requests with JSON responsesOnly supported with GNIP
YouTubev3
Initial Release: January 2013
OAuth 2REST requests with JSON responsesSupported
Pinterestv1
Initial Release: April 2015
OAuth 2REST requests with JSON responsesNot Supported

Aplicación Demo Devise

Al integrar estas APIs en tus aplicaciones nuevas o ya existentes, gracias a un exceso de paquetes y bibliotecas API de redes sociales, este proceso es más fácil que nunca. La mayoría de las plataformas y frameworks tienen bibliotecas de terceras partes que han sido probadas, que hasta unifican el aspecto de autenticación de todas estas APIs en una sola biblioteca con una arquitectura de plugin ordenada.
Para este artículo, echaremos un vistazo a cómo Devise, una gema de Ruby, hace esto muy elegantemente para las aplicaciones de Rails. Devise es una biblioteca de autenticación flexible basada en Warden que implementa, autenticación, registro, acceso y almacén de data para proporcionar acceso múltiple. Si eres una persona más inclinada al front-end y quieres ver algo similar a AngularJS, revisa este artículo.
Devise, como muchas bibliotecas de este tipo, no vienen ya construidas con apoyo para cualquiera de las API de redes sociales. Apoyo para cada una de estas API de redes sociales, se proporciona a través de gemas adicionales. Las siguientes gemas están disponibles para la autenticación de Rails, que cubren los cinco proveedores discutidos en este artículo:
gem 'omniauth-facebook'
gem 'omniauth-pinterest'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
gem 'omniauth-instagram'
Una de las mejores cosas sobre Rails es que hay muchos plugins escritos por la comunidad de fuente abierta. Éstas están distribuidas como gemas. Enlistadas bajo un archivo de configuración central, estas gemas son manejadas por Bundler.
Ya que éstas sólo proporcionan autenticación, registro, acceso y almacén de cada uno de esos proveedores, también vamos a necesitar obtener las siguientes gemas para los clientes de la API:
gem 'twitter' # https://github.com/sferik/twitter
gem 'instagram' # https://github.com/facebookarchive/instagram-ruby-gem
gem 'koala' # (Facebook API) https://github.com/arsduo/koala
gem 'google-api-client' # (YouTube API), https://github.com/google/google-api-ruby-client
gem 'pinterest-api' # https://github.com/realadeel/pinterest-api

Omniauth y Autenticación

Para que un usuario pueda autorizar tu aplicación con tu proveedor, puedes proporcionar un link con el siguiente camino:
omniauth_authorize_path('user', :facebook)
omniauth_authorize_path('user', :instagram)
...
Para poder reaccionar en el llamado después de la autenticación de un usuario, puedes definir un OmniauthCallbacksController con los scopes como funciones así:
class AuthenticationsController < Devise::OmniauthCallbacksController
 def facebook
   if request.env["omniauth.auth"]
         ...
   end
 end
end
Ese es el lugar donde agregar un nuevo modelo de Autenticación con el token y la data dentro de tu aplicación:
authentication = where(provider: omniauth.provider, user_id: user.id)
 .first_or_create do |auth|
 
   auth.user = user
   auth.uid = omniauth.uid
 
   auth.secret = omniauth.credentials.secret
   auth.token =  omniauth.credentials.token
   ...
end

Hacer Llamadas API

Aquí hay un ejemplo de cómo usar Koala para hacer preguntas a la API de Facebook. El resto de los proveedores funcionan más o menos de manera similar y son documentadas en el README de la gema.
Así es como obtienes tu data de usuario usando Koala:
authentication = user.authentication_for_provider(:facebook)
token = authentication.token
api = Koala::Facebook::API.new(token)
results = api.get_object("me")
Puedes, luego, usar el resultado de regreso de JSON hecho por la API. El código fuente de este demo de la aplicación está disponible en GitHub.

Para Finalizar

Las API de redes sociales te proporcionan una herramienta poderosa para hacer preguntas al set de las datas en gran escala de las redes sociales, al igual que recolectar gran data para tu aplicación. Puedes construir un servicio sobre estas API o usarlas para aumentar tu propia aplicación o perspectivas del usuario.
Rails y las gemas disponibles, hacen más fácil integrar estas API a tu aplicación de rails y hacer preguntas a las interfaces con una capa de abstracción entre tu aplicación y la API.
Articulo publicado originalmente en Toptal.

No hay comentarios:

Publicar un comentario

El administrador se reserva el derecho de publicar los mensajes