Las aplicaciones de FaceBook funcionan principalmente mediante una página web que alojamos en nuestros propios servidores y que es la que se encarga de realizar todos los procesos reales. Los usuarios realmente no llaman a esa página web directamente sino que lo que hacen es cargar la página de nuestra aplicación en FaceBook. Esta página lo que provoca es que Facebook llame a nuestra página, la que tiene la aplicación de verdad y que ellos llaman "URL Canvas", y le pregunte que contenido debe mostrar para ese usuario concreto.
FaceBook nos brinda una API con la que hacer que nuestra aplicación y su gran base de datos se comuniquen. Para PHP podemos descargar una librería ya hecha que nos va a facilitar la mayor parte del problema.
Pero aún con ella no vamos a disponer de la información real del usuario sino simplemente de su id y de los id's de usuario de sus amigos. Esta es la forma que tiene FaceBook de protejer la privacidad de sus usuarios. De otra forma solo con instalar las aplicaciones nosotros ya podríamos acceder a la información privada de todos los usuarios de cualquiera que se las instalase.
Con este sistema nosotros en nuestra web, en la que estamos realizando nuestra aplicación, no vamos a poner nombres ni fotos reales de usuarios sino que incluiremos etiquetas de FaceBook con estos id's de usuario que FaceBook interpretará y reemplazará por la información real. Para ello FaceBook ha desarrollado el "Facebook Markup Language" o FBML: un sistema de etiquetas parecidas al HTML con el que nosotros indicamos cosas como "Aquí pon el nombre del usuario: 3256134" y "Aquí su foto con un link a su perfil". Veamos un ejemplo práctico en PHP de como programamos nuestra aplicación con la librería PHP para mostrar las fotos de todos los amigos del usaurio logado:
<?php // cargamos la libreria require_once('libs/facebook.php'); // la apikey nos la dan en http://www.facebook.com/developers $appapikey = '92a5c3c01f10b9d40ff8a38275cad1234'; // el appsecret tn nos lo dan en http://www.facebook.com/developers $appsecret = '48456be053d7e4afade60a87aa23c151'; // iniciamos el objeto faceBook $facebook = new Facebook($appapikey, $appsecret); // Extraemos el id de usuario conectado $user_id = $facebook->require_login(); // Extraemos a un array los id's de todos sus amigos $friends_ids = $facebook->api_client->friends_get(); // Mostrando foto del usuario logado echo '<p>Hola! esta es tu foto: <fb:profile-pic uid="$user_id" linked="true" /></p>'; // Mostrando fotos de todos sus amigos echo "<ul>"; foreach ( $friends_ids as $friend_id ) { echo '<li><fb:profile-pic uid='$friend_id' linked='true' /></li>'; } echo "</ul>";
A partir de aqui, nosotros podemos desarrollar cualquier aplicación externa con un usuario o sus amigos. Solo tendremos que guardar en nuestra base de datos sus id's y asociarles las opciones que escojan de nuestra aplicación. A la hora de mostrar resultados simplemente usaremos el FBML para hacer una maqueta más amigable pero no podremos usar los datos reales.
Posts Relacionados:

[...] ejemplo de como se simplifica el ejemplo de la entrada anterior de este blog con este script: <html xmlns="http://www.w3.org/1999/xhtml" [...]
Hola... ¡enhorabuena por tu blog!... ¿podrías ayudarme?
Tengo una página en facebook dedicada al sector de la autoescuela. En ella, y mediante la aplicación FBML he podido crear una pestaña con enlaces, logos, etc…
Ahora me gustaría crear otra pestaña con el nombre “Recomendar” en la que, al pinchar en ella, al visitante se le cargara su lista de amigos a los que poder recomendar mi página.
Mi pregunta es la siguiente:
¿Qué código, FB o HTML, debo añadir al crear mediante FBML la pestaña de “Recomendar” para que esta acción se produzca? Muchas gracias. Salu2.
Hola, necesitaria crear una appi que me devuelva las fotos con un tag especifico de la persona que use esta appi.
Ejemplo: Que traiga todas las fotos cuyo tag sea "esteNombre"
Me podes dar una mano?
Gracias