Estás en Inicio / Editorial / Desarrollo Web
10.04.2008
En el Facebook Developer Garage de Madrid presentamos Demini y Searchmedia la aplicación de eDreams para Facebook Meet Your Friends. Queremos compartir aquí parte del desarrollo, para que le pueda ser útil a quien quiera desarrollar para Facebook.
Meet Your Friends es una aplicación para compartir viajes entre amigos. Permite, por ejemplo:
La aplicación se compone de tres puntos principales:
Mediante Facebook obteníamos todas la gestión de usuarios y sus relaciones. Nuestro gestor de contenidos nos permite guardar de forma sencilla viajes, mensajes y citas. Y la API de google maps nos permite presentar de forma visualmente atractiva al usuario toda esta información.

Facebook aporta la siguiente funcionalidad básica para la aplicación:
Además, nos permite notificar a usuarios de la red de amigos los próximos viajes que vamos a realizar. Podemos hacerlo escribiendo en el feed y en el minifeed del usuario, donde escribimos una entrada cada vez que el usuario crea un viaje. También, tenemos la parte de la aplicación en el perfil del usuario. Ahí presentamos un mapa con el próximo viaje que realizará el usuario.

Nuestro gestor de contenidos nos permite tipos de contenidos estructurados. En esta aplicación definimos viajes, citas y mensajes.
Mediante una API AJAX, podemos realizar el almacenamiento, recuperación y cambio de estado de los contenidos de un usuarios. Por ejemplo, para el caso de los viajes:
Todo el almacenamiento de datos se hace mediante llamadas a Inmedia.
En lo relativo a los mapas, necesitábamos una API que nos permitiese:
Para realizar aplicaciones para Facebook, es necesario poder acceder a su API REST de algún modo. Esta API ofrece los métodos necesarios para obtener toda la información de la red social del usuario que está ejecutando la aplicación. En nuestro caso nos interesaba acceder a su información personal, su red de amigos y a su perfil.
En la zona de recursos de Facebook se ofrecen dos APIs oficiales para el desarrollo, una en PHP y otra en java. En nuestro caso decidimos optamos por una solución alternativa, que era utilizar la API javascript.
Queríamos obtener una aplicación muy dinámica, en la que mediante AJAX pudiésemos cargar tanto la información de la red social del usuario, como aquella relativa a sus viajes (que guarda nuestro gestor de contenidos).
Para poder utilizar esta API, es necesario añadir la referencia al fichero javascript FacebookApi.debug.js. Además, en el directorio donde se aloje la página web es necesario copiar el fichero xd_receiver.htm.
La primera sentencia a incluir, es la inicialización del objeto api. Se hace con el siguiente código:
var api;
api = new FB.ApiClient('CLAVE DE LA APLICACION', '/xd_receiver.htm', null);
Como segundo paso, es necesario asegurar que el cliente ha hecho login, y que se cargue su identificador de sesión:
api.requireLogin(function(exception) {
// Código javascript a ejecutar a continuación
});
En todas las llamadas a la API, se puede pasar una función, que es llamada después de la ejecución del método de la API. Es necesario ir apilando así las llamadas javascript, si queremos asegurarnos de que su ejecución será correcta (existe la posibilidad de hacerlo mediante secuenciadores, pero en nuestro caso no la utilizamos).
Una vez hecho el login, ya podemos acceder al resto de funciones de la API. Por ejemplo, para recuperar la información del usuario:
api.users_getInfo(api.get_session().uid, ['first_name', 'last_name'], function(oUserInfo, exception){
// Nombre: oUserInfo[0]. first_name
});
Y para recoger los amigos del usuario que tienen la aplicación y sus datos:
api.friends_getAppUsers(function(result, exception) {
api.users_getInfo(result, ['first_name', 'last_name', 'pic_square'], function(result2, exception) {
for (var i = 0; i < result2.length; i++) {
// Nombre: result2[0].first_name
}
});
});
Utilizando la api de este modo, nos hemos encontrado con dos problemas principales. Por una parte, la escasez de documentación. Hay que basarse mucho en la prueba y error (inestimable la ayuda del firebug).
Y por otra parte, las llamadas suelen ser costosas temporalmente para una aplicación web. Es muy recomendable plantearse siempre si realmente es necesaria una llamada, intentando realizar las mínimas posibles.
Otras funciones que hemos utilizado son:
La aplicación se compone de los siguientes ficheros:
La aplicación se aloja en nuestros propios servidores (Windows 2003 Server, IIS 6.0). A la hora de crear una aplicación, podemos elegir si va a funcionar mediante FBML o mediante un iFrame. En nuestro caso optamos por el iFrame.
Por una parte, no utilizar el FBML nos perjudicaba a la hora de mostrar las pantallas típicas de Facebook. Pero por otra parte, trabajar con el iFrame nos daba más libertad a la hora de desarrollar, y accediendo a la API podíamos recoger toda la información que necesitábamos.
En la configuración, se le especifica también la url a la que tiene que llamar Facebook en el iFrame (callback url).

Finalmente, queríamos mostraros el resultado, invitando a probarlo:
Califica esta nota:
José Altava
Arquitecto Software en Demini, especializado en el desarrollo de soluciones Web.
Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.
Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?
11 comentarios en total.
Desde luego ver post de este tipo, puede hasta alegrarle a uno, más que el día la semana, ya que precisamente me interesaba un tema de este tipo y creo que con esto voy a dar por resuelto el problema.
Muchas gracias,…¡¡¡¡
Dpto. Comunicación
Felicitaciones. Muy buen artículo. Quedaría profundizar un poco más sobre el FBML para estar completos.
Exelente tema, bastaba ya un poco de informacion clara al respecto.
Jose, muchas gracias por compartirnos la experiencia de desarrollar para facebook, con esos pequeños detalles que sin duda ayudan a los que también queremos hacer cosas en dicha plataforma.
muchas gracias… ![]()
Un gran trabajo, José!
Un placer haber trabajado a tu lado…
Aqui podemos ver que existen bastantes maneras de poder desarrollar una aplicacion para facebook, pero tengo que un problema y no se si alguien puede ayudarme, deseo usar estas funciones feed_publishStoryToUser,feed_publishActionOfUser y las relacionadas a ellas, no logro que me realizen la funcion que deben realizar, si alguien tiene un ejemplo de codigo que use estas funciones, les agradeciria mucho si me la hacen conocer. gracias.
Orale cvander, gracias x leer mi blog. Sinceramente es un honor y vamos a seguir promoviendo la tecnologia en Guatemala
He subido una aplicacion a facebook, funcional claro esta.
El tema es que he realizado el submit para que se publique en el directorio de aplicaciones de facebook y no logro subirla, actualmente hacen 6 dias desde que le di a submit y no recibo contestacion.
Gracias desde ya un saludo a todos
me encantarias que crearanuna manera de poder añadir layout a nuestras paginas de perfil, como lo hacemos en my space. me gustaria que me ayuden al respecto.
gracias
Excelente, muy buen aporte José sin dudas nos da un buen panorama de esta atractiva plataforma.
Maestros del Web es el punto de encuentro para los entusiastas de la red.
Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress