Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Alterntiva a la API para consultar informacin a facebook Permite representar la aplicacin en el canvas de facebook
Conjunto de servicios web que definen una interfaz de usuario para acceder a
los servicios del ncleo de facebook
Perfil Amigos Grupos Eventos Foto
Arquitectura REST
Soporta:
Oficialmente: developers.facebook.co m/resources.php
PHP 4 PHP 5 Java
ColdFusion C++ C# D Emacs List Lisp Perl Python Ruby on Rails VB.NET Windows Mobile
$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));
ap1><inicial ap2>PAA
Ejemplo: DanielFLPAA@gmail.com
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';
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)
$facebook->api_client->users_getInfo($uids, $fields)
first_name
has_added_app hometown_location hs_info interests
pic
pic_big pic_small pic_square political
tv
wall_count work_history
//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);
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)
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
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!'));
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>"; }