Sei sulla pagina 1di 38

Elementos

Facebook Application Programming Interface (API)

Facebook Query Language (FQL)

Api para el consumo de servicios ofrecidos por facebook

Facebook Markup Language (FBML) Facebook Javascript

Alterntiva a la API para consultar informacin a facebook Permite representar la aplicacin en el canvas de facebook

Se basa en la metfora de callback

Conjunto de servicios web que definen una interfaz de usuario para acceder a
los servicios del ncleo de facebook
Perfil Amigos Grupos Eventos Foto

Funcionalidades del portal


Login Redireccin Actualizacin de la vista Etc.

Arquitectura REST

Soporta:
Oficialmente: developers.facebook.co m/resources.php
PHP 4 PHP 5 Java

Interfaces por terceras partes


ASP.NET ASP (VBScript)

ColdFusion C++ C# D Emacs List Lisp Perl Python Ruby on Rails VB.NET Windows Mobile

Ejemplo de acceso a la api de facebook

$user_data = array(name, pic, activities); $current = $facebook->api_client->users_getInfo($user, $user_data); echo <p>Your name is {$current[0][name]} </p>; echo <p>Here is what you look like: <img src={$current[0][pic]} /></p>;

Lenguaje parecido al HTML utilizado para renderizar pginas dentro del canvas de facebook
Subconjunto de HTML Soporte para los elementos de script y style. Tiene que ser Facebook Javascript. Incluye varias extensiones propietarias para desarrollar tareas especficas de una aplicacin facebook.

Interfaz de facebook basada en SQL para recuperar informacin de la red social. Permite acceder a varias tablas de la base de datos de facebook:
User Friend Group Group_member Event Event_member Photo Album Photo_tag

Restricciones:

Prcticamente se puede hacer lo mismo mediante FQL que con la API, pero con ciertas ventajas Ejemplo:
Se reduce el ancho de banda necesario La sobrecarga debida a la interpretacin del script.

Las sentencias SELECT slo pueden afectar a una tabla al mismo tiempo No se permiten JOINs La consulta debe ser indexable

$friends = $facebook->api_client->fql_query(SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=$user));

Lenguaje prximo al Javascript con diferencias:


En lugar de usar un DOM estndar, tiene su propia implementacin del DOM Presenta algunas diferencias en la implementacin de objetos. Facebook interviene la ejecucin del script para limitar el scope del script, por seguridad.

Vamos a crearnos un usuario todos en:


Google gmail (necesario para crear cuenta facebook) Facebook

El login, que sea <nombre><inicial

ap1><inicial ap2>PAA

Ejemplo: DanielFLPAA@gmail.com

Nota: Facebook controla que slo exista una cuenta

Agregamos todos como amigo al de al lado y al profesor.

por persona, y por lo tanto, por email tambin.

El primer paso ser registrar la aplicacin en facebook Con ello se obtiene:


API key Secret key

Para ello, vamos a www.facebook.com/developers. y pinchamos en Configurar una nueva aplicacin.

La llamamos LaprimeraaplicaciondeXXXXX y aceptamos. La aplicacin est generada, y nos habr facilitado:


ApplicationId Clave para la API Clave secreta

Completamos la descripcin y guardamos los cambios.

Ya tenemos la aplicacin dada de alta, ahora hay que preparar el entorno donde la vamos a desplegar. Debemos tener un servidor de aplicaciones en el que desplegaremos la aplicacin y ser facebook el que redirija las peticiones al mismo. Para ello necesitaremos:
Servidor web com PHP (en nuestro caso, AppServer) Las APIs de facebook que se pueden bajar de la pgina de desarrollo y que nos permitirn consumir la API remotar mediante servicios web.

Dentro de la carpeta c:/AppServ/www crear una carpeta miprimeraapp Descargar www.dflanvin.com/facebookplatform.zip (esta versin de la API est modificada para poder acceder a facebook desde detrs del proxy uniovi), descomprimirlo en la carpeta recin creada de tal forma que nos quede la siguiente estructura de directorios.
C:/AppServ www miprimerapp facebook-platform

Ahora vamos a desplegar la aplicacin de prueba de facebook. Copiar el siguiente cdigo en un nuevo archivo index.php, sustituyendo los cdigos por los adecuados.

<?php error_reporting(E_ALL); require_once './facebook-platform/client/facebook.php'; //Datos de la aplicacion $appapikey = xxxxxxxxxxxxxxxxxxxxxxxxxx'; $appsecret = xxxxxxxxxxxxxxxxxxxxxxxxxx';

//Inicializamos la API $facebook = new Facebook($appapikey, $appsecret);


echo Hola! Bienvenido a mi primer programa facebook!;

Ya tenemos nuestra primera aplicacin preparada. Vamos a intentar acceder a ella mediante http://localhost/miprimeraapp
Qu ha sucedido? Ha funcionado? Por qu? No estamos necesitando nada que requiera acceso a facebook.

Las aplicaciones facebook se han de acceder siempre desde facebook, dado que si no se encuentran fuera de su entorno de ejecucin Al acceder directamente, la aplicacin no est en sesin y por lo tanto no puede acceder a la informacin que necesita. Tenemos que decirle a facebook en qu url debe delegar las peticiones que le lleguen para la aplicacin que estamos desarrollando.

Para ello, nos vamos a la pgina de la aplicacin y pinchamos en lienzo. Los datos imprescindibles que tenemos que aportar son:
URL Pgina Base http://apps.facebook.com/<nombre> Canvas Callback URL http://xxx.xxx.xxx.xxx/miprimerapp Mtodo render: FBML (nos permite utilizar las etiquetas <fb/>)

Ya estamos listos para acceder por primera vez a nuestra aplicacin facebook. La url estar compuesta por la cadena que comparten todas las apps facebook ms el nombre que le hayamos puesto en el campo URL Base Accedemos a http://apps.facebook.com/<nombre>/

Hasta ahora nuestra aplicacin se encuentra abierta a todos los usuarios, se encuentren o no logueados en facebook. Para probarlo, abrir un navegador diferente y acceder a la url de la aplicacin Vamos a extender la aplicacin para que exija que el usuario que la ejecute est logueado, y podamos as acceder a su perfl y dems informacin.

En primer lugar, vamos a obligar a que el usuario est logueado. Para ello:
$user_id = $facebook->require_login();

Intenamos de nuevo acceder a la aplicacin sin loguearnos. Qu sucede? Realizamos ahora la siguiente modificacin y probamos:

echo "Hola <fb:name uid=\"$user_id\" useyou=\"false\" />! Bienvenidos a mi primer programa facebook!";

En la wiki de desarrolladores facebook (http://wiki.developers.facebook.com/index. php/Main_Page) tenemos las referencias a todas las funciones de la API que podemos utilizar: http://wiki.developers.facebook.com/index.p hp/API Estn con una nomenclatura genrica puesto que se ofrecen en distintos lenguajes.

Vamos a utilizar algunas de las funciones del grupo friends de la API. La funcin friends.get devuelve los identificadores de los amigos del usuario acutal de facebook. Pasado a php, la forma de invocarla sera: Que devuelve un array con los identificadores de cada uno de los amigos del usuario actual.

$facebook->api_client->friends_get();

Vamos a listar los identificadores de todos los amigos del usuario actual de facebook. Para eso:

$friends = $facebook->api_client->friends_get();

Y luego, para cada uno, mostramos su identificador con un salto de lnea. echo "Estos son tus amigos:<br>";
foreach ($friends as $friend) { echo "$friend<br>"; }

Modificar el script anterior para que, adems de los identificadores de tus amigos, se muestre a continuacin su nombre.
(Resuelto en versin 1.0)

Mediante users.getInfo podemos acceder a los datos del perfil de un usario.


El primer parmetro es un array de identificadores de usuario El segundo, es una array en el que pasamos los identificadores de los campos del perfil que deseamos recuperar. La siguiente tabla muestra los atributos a los que se puede acceder mediante esta funcin.

$facebook->api_client->users_getInfo($uids, $fields)

uid about_me activities affiliations birthday books current_location education_history

is_app_user last_name meeting_for meeting_sex movies music name notes_count

profile_update_time quotes relationship_status religion sex significant_other_id status timezone

first_name
has_added_app hometown_location hs_info interests

pic
pic_big pic_small pic_square political

tv
wall_count work_history

Para recuperar el nombre y el estatus del usuario:

//Recuperamos informacin del perfil del usuario $desired_details = array('first_name', 'last_name', 'status'); $user_details = $facebook->api_client>users_getInfo($user_id, $desired_details);

$status = $user_details[0]['status']['message']; $first_name = $user_details[0]['first_name']; $name=$user_details[0]['name']; $last_name = $user_details[0]['last_name'];

Modificar la versin actual del piloto para que el acceso a la informacin de los amigos se realice mediante users.getInfo y se muestre:
Nombre Apellidos Status Cumpleaos (Resuelto en piloto 2.0)

Vamos a ver ahora como recuperar los eventos a los que est vinculado un usuario. La funcin events.get retorna la relacin de eventos relacionados a un usuario:

$facebook->api_client->events_get($uid, $eids, $start_time, $end_time, $rsvp_status) $uid: Id de usuario. Si es nulo, se toma el autentificado $eids: lista separa por comas de ids de eventos $start_time y $end_time permite acotar la bsqueda por fechas

El status indica la relacin del usuario con el evento (attending, unsure, declined, o not_replied)

Modificamos la versin actual para que recupere los eventos del usuario actual, y nos los muestre en una lista.

echo "<br><br>Eventos del usuario actual:"; //Gestin de eventos. ($myEvents= $facebook->api_client->events_get(null, null, null, null, null)); if ( $myEvents ) { foreach( $myEvents as $event ) { echo "{$event['name']} - {$event['location']}: {$event['eid']}<br>"; } }

Probamos la aplicacin

Vamos a extender la aplicacin para que nos muestre todos los asistentes de cada evento al que estemos suscritos. Para ello, utilizar events_getMembers(<ide del evento>) que retorna un array con cuatro campos:
attending: contiene un array con los ids de los asistentes. unsure: array con los que no estn seguros declined: array con los que no asistirn not_replied: array con los que no han contestado (Resuelto en version 3.0)

El texto resultante debera ser:

Asistentes al evento : Concierto de U2 en Estadio Camp Nou, Barcelona Va a asistir : Mireya Masclans Va a asistir : Lluis Blues Va a asistir : Imanol Egido Egaa Va a asistir : Anrocknio Ruiz Va a asistir : Peggy Van Ham Va a asistir : Dani Cobo Meroo Va a asistir : Joanjo Rubio Va a asistir : Julian Beaudet Va a asistir : Daniel Fernndez Lanvin

(Resuelto en version 3.0)

Podemos cambiar el estatus del usuario desde nuestra aplicacin. Para ello,

$facebook->api_client-> call_method( 'facebook.users.setStatus, array( 'api_key' => $appapikey, 'status' => 'estoy haciendo el gamba con la api del feisbuc!'));

Vamos a probar a aadirlo. Funciona? Por qu?

Para poder cambiar el estatus del usuario desde una aplicacin se requiere que sta tenga permisos extendidos. Los permisos pueden obtenerse:
El usuario directamente los otorga editando la configuracin de su aplicacin (men aplicaciones/Editar Aplicaciones/Editar configuracin) Ofrecer al usuario la posibilidad de otorgarlos explcitamente desde la propia aplicacin.

Para ello:

try{ $facebook->api_client>call_method('facebook.users.setStatus', array('api_key' => $appapikey, 'status' => 'estoy haciendo el gamba con la api del feisbuc!')); } catch (Exception $e) { echo "No te puedo cambiar el estatus sin permiso. Pincha <fb:prompt-permission perms=\"status_update\">aqu</fb:prompt-permission> para obtenerlo<br>"; }

Potrebbero piacerti anche