Do not speak Spanish? Read this post in English.

Sábado, 24 d abril d 2010.

Facebook Graph Api

Facebook nos ha sorprendido con un cambio radical que vuelve a demostrar porque son la red social numero 1 del mundo. Se trata de una nueva API de integración: Facebook Open Graph, que ha cambiado totalmente la forma con la que podremos interactuar con Facebook a partir de ahora. Se trata de un cambio drástico, que no tiene nada que ver con como se trabajaba hasta ahora con Facebook y que viene a sustituir más que nada al ya instaurado aunque siempre incomodo Facebook Connect.

Sin duda estamos a punto de ver como muchas nuevas web se lanzan a conectarse con Facebook ya que este ha pasado a dar soluciones a todos los niveles: desde los añadidos más básicos hasta complejas integraciones con las webs.

La base, Graph API:

Este cambio es básicamente un sistema mucho más intuitivo y fácil por el que Facebook pasa a trasmitir sus datos y por el que podemos enviárselos. La Graph API representa la información de Facebook de una forma organizada donde existen tipos de elementos con información que los compone (usuarios, posts, fotos, eventos, etc.) y conexiones entre todos ellos (amigos, feed, fotos y albumes, etc.). Facebook a adoptado el modelo de datos Json y ha pasado a generar las peticiones mediante URLs muy simples.

Por ver unos ejemplos:

- Para ver los datos de la página Matt Cutts: https://graph.facebook.com/36350343556
- Y para ver la foto de esta página: https://graph.facebook.com/36350343556/picture
- O para ver su hilo de mensajes: https://graph.facebook.com/36350343556/feed

Puedes ver como se conforman todas las informaciones de la Graph Api en la documentación de Facebook

Con este tipo de accesos, vemos que las peticiones de datos, sobretodo para páginas públicas (ya que la información para urls no publicas es un poco más difícil de extraer) se han vuelto mucho más sencillas. A mi personalmente me recuerdan a las de la API de Twitter en su sencillez. Esto va a hacer que la creación de consultas sea muchisimo más sencilla: podremos ver la información en el mismo tipo de plugins que ahora mimo maneja twitter accediendo incluso de forma cómoda con javascript.

La autentificación:

Pero la base de la mayor parte de Facebook es la información privada a la que solo se puede acceder si se te da permiso como usuario: los amigos, sus feeds, sus fótos, etc. Esto hace que sea imprescindible una forma de autentificar usuarios. Facebook no ha querido comerse demasiado la cabeza en este sentido y a tirado por lo que ya podemos decir que es un estandar de identificación: el OAuth. Usado por Twitter y adaptado recientemente por meebo para crear una plataforma conjunta de autentificación de la mayor parte de redes sociales (salvo los dos grandes: Facebook y twitter). Facebook ha hecho también su adaptación del sitema y la ha llamado OAuth 2.0. Este sistema se basa en que el usuario, con las cookies de login en Facebook ya creadas habilite el acceso con nuestra aplicación de forma que a nosotros nos vuelva un "Tcken", un identificador con el que en cada petición que hagamos demostramos tener acceso a esa información.

Realmente el sistema se ha simplificado hasta el punto que uno mismo puede entender todos los pasos que se dan al autentificar usuarios. Aun así, sea cual sea la vía por la que accedamos Facebook va poner en nuestras manos las herramientas necesarias para que esta parte sea lo más sencilla posible.

Puedes aprender más sobre OAuth 2.0 en la documentación de Facebook

Los Social Plugins

Pero Facebook no se ha quedado ahi y ha sacado formas aún más sencillas para interactuar con el en lo que ha llamado "Social Plugins". En estos vienen definidos unos módulos que podemos añadir fácilmente a nuestra web y que se encargan de aportar a nuestra web de nuevas funcionalidades totalmente gestionadas por Facebook y en las que muchas ya interactúan por si solas con sus sistemas.

Sin profundizar demasiado diremos que de momento se han creado 8 plugins para nuestras webs. Algunos de estos plugins pueden usarse libremente en cualquier web. Facebook nos permite incluir la url de un Iframe con el que mostrarlos sin problemas. Sin embargo otros, por sus funcionalidades y privilegios, requieren que sean usados con una app de Facebook (aplicacion interna o web con facebook integrado).

Los 8 Social Plugins de Facebook

Los SDK

FaceBook también nos brida clases ya trabajadas para poder usar esta nueva API en nuestras webs. Destaca entre ellas la JavaScript SDK en la que con un simple código añadimos a nuestras páginas de forma asíncrona el javascript de Facebook que nos permitirá realizar desde el cliente y a nuestra manera el login del usuario y las llamadas a las distintas urls de la nuev Graph Api.

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({appId: 'your app id', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

Sin embargo, el proceso sigue siendo demasiado complejo para todo aquel que no sea programador. Este SDK es con diferencia mucho más usable que la API javascript de Facebook Connect, pero seguimos necesitando entenderlo totalmente para hacer la mayor parte del trabajo.

A mi, personalmente, me molesta que no haya un par de métodos más de serie y que el código, por la forma en la que viene dado nos obligue a incluirlo en el body de nuestro HTML. Espero poder colgar en el blog en breve alguna solución alternativa.

Conclusión

Creo que esta nueva actualización realmente ha sido un gran acierto. Facebook Connect era incómodo y los desarrollos no aprovechaban todas sus funcionalidades. Ahora facebook se ha vuelto más amigable y es de esperar que la comunidad responda. Creo que hay 3 aspectos principales a destacar:

- La información pública es ahora mucho más accesible, tanto como la de twitter pero con la información más ordenada y clasificada.

- Cualquier web puede "socializarse" sin grandes conocimientos. Vamos a ver florecer botones de "Me gusta" en multitud de blogs y comentarios añadidos en cualquier parte de webs con escaso desarrollo.

- Los procesos con usuarios se vuelven más sencillos, lo que permite a más webs adaptarse a Facebook e integrarlo totalmente en sus sistemas.

Temas Relacionados: General programacion

Autor:

8 Comentarios para “Facebook Graph Api”

  1. Iñaki, ya se echaba de menos un poco tus aportaciones, como siempre, excelente!!

  2. Ramiro Araujo dice:

    Hola
    te hago una pregunta. Estoy con un sitio externo usando facebbok connect. Sin embargo, con el nuevo javascript sdk consigo hacer login pero mediante un popup. Es posible hacerlo de la forma que superpone una capa sobre el site?

    Gracias

  3. Mario dice:

    muy buen post! util!!

  4. charlydice dice:

    Gran post y muy util para arrojar algo de luz a los cambios de Facebook.

    Me surge una duda, dices que Facebook Open Graph es una nueva API de integración, por lo que debo entender que no es sustitutiva de la antigua, no?

    Si es así, porque en la docu de Facebook no hay apartado que no ponga este mensaje:

    "Facebook is modifying the way you can use the multi-friend selectors. Details will follow soon.
    For more information, please read the Developer Roadmap, specifically, the sections on requests and invites."

    Están cambiando el modo de usar componentes antiguos? Como debemos actuar ante esto los desarrolladores de aplicaiones?

    Muchas gracias de antemano, Iñaki (y quien se anime a contestar).

  5. ikhuerta dice:

    Buenas,

    La verdad es que Facebook no se distingue por avisar a los desarrolladores de los cambios que hace en su API. Hay cosas que simplemente un día dejan de funcionar así que ya tenemos suerte de que pongan algún tipo de mensaje... Este cambio es muy drástico, como prueba de que esta va a terminar sustituyendo a la antigua, puedes ver que por ejemplo al entrar en developers ahora por defecto solo te hablar de esta Api y no de la antigua.

    Sin embargo no creo que sea buena idea dejar de dar soporte a la antigua de forma breve (se les caerian muchisimas Apps) simplemente deberían descontinuarla y que muera poco a poco, pero con esta gente todo son sorpresas.

    Esto en cuanto a la API en general puesto que FaceBook Connect si que está claro que se lo quieren cargar. Además era tan aparatoso que no creo que a nadie le suponga una verdadera molestia adaptarse. La nueva api es mejor: más comprensible y más versatil.

    Los desarrolladores podemos quejarnos, pero poco más porque la plataforma merece el desarrollo en ella y hay que aguantarse. He visto a muchos programadores quejarse de los cambios que va haciendo Facebook pero pocas acciones de protesta publicas, la verdad...

  6. Muy buen post! apoyo lo que dices, tampoco me gusta que el codigo tenga q ir obligatoriamente despues de body en el html

  7. Ivan dice:

    Querido Amigo, una consulta, ¿La API de facebook permite hacer publicaciones con un script que haga el login y publique solo con ejecutarlo?, por ejemplo, hice un script en perl que publica un mensaje en twitter solo con ejecutar el script, esto sirve mucho si deseas integrar en tu sitio un sistema que publique cosas automaticamente o haga consultas de forma automatica sin pasos previos entre la ejecucion y la obtencion del resultado, esto lo pude hacer con las API de google y de twitter pero no encuentro la forma de hacerlo con facebook, no he podido obtener el token_secret, ¿Posees alguna referencia de esto?

    • ikhuerta dice:

      Buenas,

      Permitirlo lo permite, pero es ligeramente distinto. Para hacerlo tendrás que hacer un login con tu usuario (el que publica) pidiendo permisos de acceso a publicar y de acceso con el usuario offline. Este es un permiso especial de facebook que te permite lanzar la api sin que el usuario esté por en medio y es el que por ejemplo se usa en gestores remotos de cuentas (hootsuite, tweetdeck, etc.).

      Es decir, tendrás que montar un sistema para logarte con el usuario pidiendo esos permisos, almacenar el token de acceso y a partir de ahi ya podrás ir publicando remotamente.

Anímate y deja tu comentario

Esto son experimentos, no preguntes ;) prueba metadescription Prueba title