Cómo utilizar la API de Facebook vía REST server

Hace poco publiqué un post de como crear vuestra primera aplicación de Facebook con PHP.

Con este post vamos a ir ahora un pasito más adelante, os voy a enseñar con un sencillo ejemplo como utilizar la API de Facebook en nuestra aplicación.

El primer paso para utilizar la API de Facebook en nuestra aplicación es tener creada una aplicación de Facebook funcionando en un servidor Apache con sus correspondientes librerías en PHP5.

Si tenemos ya controlado ese paso trabajar con la API de Facebook es bastante sencillo. Facebook utiliza un sistema de comunicación que ellos denominan REST-interface, que viene a ser algo parecido a un servidor SOAP con XML, pero con sus particularidades. Es decir, que desde nuestra aplicación enviamos peticiones vías http al servidor de Facebook y este ejecutará los métodos que le solicitemos (o nos enviará las propiedades) y nos dará la respuesta también vía http.

Esto nos lleva a hablar de un requisito importante de nuestro servidor, debe tener Curl activado, de lo contrario el ejemplo que voy a mostraros no funcionaría. La librería Curl sirve para que desde PHP podamos navegar páginas web remotas (o sea, enviar y recibir datos vía http) y sólo puede ser activada por el administrador del servidor, así que si vuestro hosting no lo tiene activado moved Roma con Santiago para conseguir que os la activen (o cambiar de proveedor de hosting).

Os pongo aquí un ejemplo sencillo que muestra como subir fotos con la API de Facebook y PHP:

<?php
function signRequest(&$args, $secret){
	ksort($args);
	$sig = "";
	foreach($args as $k => $v){
		$sig .= $k . '=' . $v;
	}
	$sig .= $secret;
	$args['sig'] = md5($sig);
}

$key = 'xxxxxxxxxxxxxxxxxxxxxx';
$sec = 'xxxxxxxxxxxxxxxxxxxxxxxx';

$ver = '1.0';
$cid = microtime(true);
$uid = 'BIGINT';
$file= 'foto.jpg';

$args = array(
	'method' => 'photos.upload',
	'v' => $ver,
	'api_key' => $key,
	'uid' => $uid,
	'call_id' => $cid,
	'format' => 'XML'
);

signRequest($args, $sec);
$args[basename($file)] = '@' . realpath($file);

$ch = curl_init();
$url = 'http://api.facebook.com/restserver.php?method=photos.upload';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$data = curl_exec($ch);
?>


Cómo veis preparamos un paquete de datos y una vez lo tenemos listo lo envíamos vía http utilizando Curl. posts posteriores volveremos sobre este ejemplo para explicar al detalle como se construyen y se firman esos datos antes de enviarlos al REST server y sobre como procesar su respuesta en XML.

12 comentarios sobre “Cómo utilizar la API de Facebook vía REST server

  • Pingback: Enviar emails con la API de Facebook | Faceblog

  • Pingback: Desarrollo: Detectar al administrador de la aplicación | Faceblog

  • Pingback: Desarrollo: Obtener los amigos de un usuario de tu aplicación que son ya usuarios de la misma | Faceblog

  • el 8 Agosto, 2009 a las 12:10 am
    Permalink

    te la misma forma se pude escribir en el muro de una página?

    gracias

    Respuesta
  • el 8 Agosto, 2009 a las 9:27 am
    Permalink

    Sí, aunque el método de este ejemplo sirve para subir fotos.

    Para publicar mensajes en el muro de un usuario necesitas tener creadas unas plantillas para tu aplicación, las hay automáticas y las hay que requieren la autorización del usuario para ser publicadas. Luego tienes que invocar esas plantillas utilizando la clase feed con el método publishUserAction, o sea, feed.publishUserAction. Si quieres más información la tienes en el Wiki de Facebook (http://wiki.developers.facebook.com/index.php/Feed.publishUserAction)

    En la versión beta de Facebook hay una clase con un método (stream.publish) para publicar un post directamente en le muro sin usar plantillas, pero aún está en fase beta, no sé cuando lo publicarán en la versión de producción.

    Respuesta
  • el 2 Febrero, 2010 a las 10:06 am
    Permalink

    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.

    Respuesta
  • el 21 Febrero, 2010 a las 1:39 pm
    Permalink

    Oye para hacer un test necesito la clave API y secret, ya tengo una aplicacion hecha, pero yo pongo la clave api y el secret y nada, no va, me pone que es incorrecta, que debo hacer en este caso?¿

    Gracias

    Salu2

    Respuesta
  • el 19 Abril, 2010 a las 11:10 pm
    Permalink

    pero yo necesito que me digan cuál es la API y secreto para pegar en la aplicación que quiero hacer…

    Respuesta
  • el 4 Junio, 2011 a las 12:02 am
    Permalink

    Esta Api esta Actualmente vigente o ya no se puede utilizar?? y si se puede utilizar que es la variable $sec ??

    $key = FACEBOOK_SECRET_KEY
    $sec = ?
    $uid = FACEBOOK_USER_ID
    $cid = se debe modificar??

    Thanks de ante mano

    Respuesta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme