El otro dia, por un proyecto, necesitaba crear una landing page para una pagina de facebook y tenía que  discriminar si un usuario que accediese era fan o no  y mostrar un contenido distinto a los fans y otro a los no fans.
Como ya viene siendo algo habitual, facebook nos modifica las cosas cada dos por tres y esta vez nos ha variado la forma de crear landig pages en nuestra fan page y esto implica la forma de discriminar a los usuarios.
Antiguamente, lo que hacíamos es ir a instalar una aplicación que se llama fbml (digo llama, por que aún existe, aunque no la podemos usar) y en esta, utilizábamos los tags <fb:visible-to-conection>
Y si ahora ya no existe este método, como lo hacemos para discriminar los fans?

Hay dos opciones. Una seria la de instalar aplicaciones que hacen lo mismo, como podría ser Cool Tabs. La otra, es crear una aplicación propia(facebook nos dice que tenemos que hacerlo así :D ).
Personalmente, prefiero la solución 2  ya que nos permite mayor versatilidad.

Facebook ahora pasa una variable codificada por POST para las aplicaciones tipo pestaña, llamada signed_request. Todos los detalles generales sobre esta variable los puedes ver aquí.

Vamos a crear nuestra aplicación.
No voy a explicar como crear una aplicación de facebook por que hay muchas webs que lo explican. Aqui, nuestro amigo google,  me ha chivado unas cuantas webs que nos lo explican.
Google

Comentar, que cuando creemos la aplicación, en la pestaña de edición de la app "Integración con facebook", debemos rellenar los campos de "Page tabs". En url de pestaña solo debemos insertar el mismo valor del canvas url.
Otro tema a revisar, para que nos funcione nuestra aplicación, es comprobar que el "OAuth 2.0 para Canvas esté activada(esto lo encontramos dentro de las opciones de la aplicación y por defecto ya esta activada - foto lateral)
Cuando tengamos la aplicación creada, vamos a modificar el fichero php que tengamos en nuestro servidor.
Este código es el que debemos insertar para discriminar los usuarios.

PHP:
  1. <?php
  2.  
  3. //Esta función nos parsea la firma encriptada y nos devuelve la info del usuario en sesión
  4. function parsePageSignedRequest() {
  5.     if (isset($_REQUEST['signed_request'])) {
  6.       $encoded_sig = null;
  7.       $payload = null;
  8.       list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
  9.       $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
  10.       $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
  11.       return $data;
  12.     }
  13.     return false;
  14. }
  15. ?>
  16. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  17. <html xmlns="http://www.w3.org/1999/xhtml">
  18. <head>
  19. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  20. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><head>
  21. </head>
  22. <body>
  23.  
  24. <?php
  25.   // Vamos a comprobar la variable
  26.   $signed_request = parsePageSignedRequest())
  27.  
  28.   if($signed_request->page->liked) {
  29.     echo "Soy FAN :) ";
  30.   }
  31.   else {
  32.     echo "No soy FAN :( ";
  33.   }
  34. ?>
  35.  </body>
  36. </html>

Guardamos y ya lo tenemos.

Solo nos queda insertar esta aplicación en nuestra fanpage de facebook.(imagen1)
Para hacer esto, nos vamos al perfil de la aplicación  y una vez dentro, hacemos click al link izquierdo de "Agregar a mi pagina".(imagen2) Si gestionamos varias fanpages nos va a pedir a que pagina la vamos a instalar.
Hacemos click a instalar y ya tendremos nuestra app lista para usar en nuestra fanpge.
Tan solo nos queda ir a nuestra fanpage y activarla.

Tienes alguna duda o comentario? No dudes en comentarlo pues :)

Descarga el fichero de ejemplo