lunes, 11 de abril de 2011

[Tutorial] Facebook Connect


Sobre lo de facebook. La mayoria de documentacion esta algo obsoleta ya hace poco metieron un nuevo SDK denominado fgraph y ahora se hace todo a traves de él. Para hacer algo parecido al facebook connect pero con lo nuevo, tal como lo he hecho yo lo primero que debes hacer es acceder a la zona de desarrolladores de Facebook y añadir el sitio a tu perfil en facebook (sale un boton verde en portada). Una vez que hayas hecho eso en esa misma pagina anterior deberia aparecerte arriba en el menu un item llamado "Mis Aplicaciones". Ahi te saldra o directamente el menu de tus aplicaciones o un blog y a la derecha un pequeño menu que pone "My Apps" o "+ Set Up New App". El caso, que tienes que hacer una aplicación.




Lo primero es dar un nombre a la aplicacion, estar de acuerdo con los términos y el captcha. Si todo ha salido bien, veras otra pantalla y en la izquierda un menu "About, Web Site, Integracion...". El caso, para nosotros la importante es Web Site donde te dan:

  • Application ID: Un numerajo
  • Application Secret: Una fraseja
  • SiteURL: La ruta donde tienes la pagina web, ejemplo http://lacasademitia.es/hola/facebook/ o simplemente http://lacasademitia.es si es en raiz donde quieres que tire el Fgraph.
  • Site Domain. Siguiendo el caso anterior seria: lacasademitia.es

Una vez que tengas esto ya es casi coser y cantar. Te vas a http://developers.facebook.com/docs/sdks/ y en nuestro caso queremos el PHP SDK

Te bajas el paquete entero y metes las 3 carpetas en tu sitio web de momento para probar.

Ahora algunos conceptos basicos:
require './facebook.php'; /*Este archivo
 es la clave de todo, esta dentro de /src/ 
del paquete que te bajes y contiene todo
 los metodos de facebook adaptados a php
 para acceder a datos de user logueado*/
$facebook = new Facebook(array(
  'appId'  => 'YOUR APP ID',
  'secret' => 'YOUR API SECRET', //NO OLVIDES 
//EN AMBOS LAS COMILLAS SIMPLES O COMILLITAS XD
  'cookie' => true, // enable optional cookie 
//support
));/*Se crear un objeto de tipo 
Facebook con el numerajo de tu app y la 
fraseja para poder acceder a los datos del user.*/

Loguearse con facebook:
if ($facebook->getSession()) { //Si saca la session del usuario, es que esta logueado y mostrara desconectarse
  echo 'Logout';
} else { //Si no, mostrara desconectarse
  echo 'Login';
}

Como llamar a la Api:
try {
  $me = $facebook->api('/me'); //Aqui lo que hace es que si la sesion de FB esta abierta , la api devolvera el objeto del usuario y podras ver y acceder a datos.
//te aconsejo que hagas aqui un:
//echo $me;
//para que veas lo que sale
} catch (FacebookApiException $e) {
  error_log($e);
}

Aquí como puedes ver se hace referencia a $objeto->metodo, tal como $facebook->api(xxx) o $facebook->getLoginUrl() 
Esto tiene un pelin de complejidad porque es darle a php funcionalidad de objetos y en vez del punto objeto.getTal() es objeto->getcual() con una flechita. Esos metodos los puedes ver en el facebook.php dentro de /src/ que es el quiz de la cuestion.

Por último y para poner un boton como dios manda y que se abra una ventanita con el logueo de facebook desde nuestro sitio web, simplemente segui el archivo de /examples/ el que puedes ejecutar y ver como funciona (OJO abriendolo antes y poniendo las claves de tu app en la cabecera) y de esa manera ver mejor que hace cada cosa. Ahi usa el JavaScript XFMBL que es para dar funcionalidad y vistosidad, como el boton guay y la ventanita en vez de la redireccion que haria el php. Ambos metodos como veras en el ejemplo pueden convivir.

Por último cabe decir que los ejemplos o las lineas que tires solo funcionaran subiendolas al servidor que hayas dicho en el Site URL y Site Domain de tu aplicacion en facebook, es decir, no se pueden hacer pruebas en local, ya que la solicitud la redirige a tu dominio.

Un saludo y espero haberte sido de ayuda.