Taller: ¿Cómo mostrar contenido diferente en una pestaña de Facebook para fans y no-fans?

Hoy os presentamos la así llamada función del fangate: ¿Cómo podemos conseguir en la pestaña  de una página de fans que se muestre un contenido diferente a los fans y los “no-fans”?

Contenido para los no-fans Contenido para los fans
Pestaña de inicio de Movistar para no-fans Pestaña de inicio de movistar en Facebook para fans

Como ya no hay fmbl estático tenemos 2 opciones para realizar un fangate:

  1. Utilizar una aplicación prehecha que ofrezca esta funcionalidad. En el post “Ya no hay FBML estático: ¿Qué alternativas tenemos para pestañas individuales en Facebook?” presentamos 3 aplicaciones que han integrado un fangate
  2. Trabajar con un iframe como lo hemos descrito en “Taller para páginas de fans: ¿Cómo crear una pestaña individual con iframe?” . Si elegís esta segunda opción el fangate se hará un poco más complicado. ¡ Qué fáciles aquellos tiempos cuando el tag fbml <fb:visible-to-connection> lo resolvía todo!

Manos a la obra -

Antes de empezar hay que cumplir con los siguientes requisitos:

  • La cuenta del administrador tiene que estar verificada
  • como para cualquier otra pestaña con iframe hace falta un espacio web
  • una aplicación en Facebook con OAuth 2.0 activado
  • subir la Facebook php sdk en el espacio web . La encontráis en https://github.com/facebook/php-sdk

Integrar el siguiente código fuente

<!--? require('facebook.php');
$app_id = "APPID";
$app_secret = "APPSECRET";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
<pre>$signed_request = $facebook->getSignedRequest();
function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }
  if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) { ?>
      Contenido para fans!
  <?php  } else { ?>
      Contenido para no-fans!
<?php
    }
  }

?></pre>

¡No olvidéis poner vuestra App-ID y App-Secret y poner el contenido para fans y no-fans!

P.S.

Austriaco y casado con una española, lleva años trabajando en marketing en internet como CEO de AVISEO, empresa especializada en SEO y SEM, también para el mercado español. Uno de sus primeros pasos fue escribir este blog sobre el mundo de Facebook para empresas.

Deja un comentario

17 comentarios

  1. Nicole

    Estoy personalizando la pagina de fans de mi sitio web y estoy implementando una pagina para fans y otra para no fan quisiera que me ayudes por favor con el codigo html para que se diriga a mi muro de facebook si es un fan.

    • Martin Zelewitz

      hola Nicole
      los fans siempre estarán dirigidos al muro – esto no se puedeo cambiar. solo se puede configurar a donde van los no-fans

  2. Nicole

    Ohh ya y como seria el codigo html para dirigir a un no fan a otra seccion de mi pagina de facebook.

    Gracias por su ayuda de cuentamelared.com

    • Martin Zelewitz

      Hola Nicole,
      no necesitas un código html: en editar la página / gestionar permisos / default landing tab puedes configurar que pestaña se va a mostrar a los no-fans

  3. Andres Valencia

    Muchas gracias Martin, ya me estaba volviendo loco por que no me salia. de nuevo muchas gracias

    • Martin Zelewitz

      Hola Carlos,
      pues a mi si me muestra 2 contenidos diferentes según mi estado. Cuando soy fan veo otro contenido como cuando no lo soy (!?)

  4. hola amigos, necesito ayuda con esto alguien sabe donde hay un tuturial mas detallado donde me indiquen paso a paso como se hace y como se integra el facebook php sdk al codigo final… gracias de antemano, salu2

  5. Víctor

    Hola Martin,

    estoy intentando hacer que en un blog de WordPress, un post en concreto sea exclusivo para los fans de la página de facebook. He probado este mismo código, pero al introducirlo peta.

    Tienes alguna idea de como se podria hacer?

    Gracias

  6. Ricardo

    Hola Martin, quisiera saber si este código tengo que ingresarlo obligatoriamente en un .php o puede ser en un .html? gracias por la info. xD

  7. Ricardo

    Ya lo pude solucionar, si es en .php.
    Mi código tuve que modificarlo por:

    $app_id,
    ‘secret’ => $app_secret,
    ‘cookie’ => true
    ));
    $signed_request = $facebook->getSignedRequest();
    function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
    $encoded_sig = null;
    $payload = null;
    list($encoded_sig, $payload) = explode(‘.’, $_REQUEST['signed_request'], 2);
    $sig = base64_decode(strtr($encoded_sig, ‘-_’, ‘+/’));
    $data = json_decode(base64_decode(strtr($payload, ‘-_’, ‘+/’), true));
    return $data;
    }
    return false;
    }
    if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) { ?>

    window.location=”http://www.universal.webege.com/index.html”;

  8. Pepe

    Hola, he tenido problemas para crear mi fangate y finalmente ha resultado ser porque el servidor no tenia la librería json instalada. Lo digo por si alguien se encuentra con esto. También hay que recordar el tema de conexiones seguras https que parece que a partir de octubre será obligatorio. ¿Alguna sugerencia? Podeis ver un ej de fangate aqui: http://www.facebook.com/cpgrupo
    Un saludo

  9. Gracias de verdad andaba buscando esta solucion mil gracias por este aporte…. es esencial mostrar contenido para fans y para los q no ya que asi podemos optimizar y tener mas fans en facebook.. de nuevo gracias…

    marketing online

  10. hola, la verdad llevo horas intentando de todo, cabe decir q no se mucho de html y esas cosas me dio por vencida, si alguien quiere ayudarme . yo lo unico que quiero es que el contenido de mi pagina solo pueda ser visto por fans. saludos ! elis.