Desarrollo: Obtener el id de un usuario con el nuevo SDK de PHP en modo XFBML

El identificador del usuario

Uno de los datos clave que necesitamos de un usuario cuando desarrollamos aplicaciones para Facebook es el identificador del usuario.  Gracias a ese identificador podemos personalizar la aplicación al máximo para mejorar su experiencia de uso. Sus fotografías, sus amigos, sus datos personales, etc… cuelgan siempre de ese dato.

Nuevo SDK con Canvas e iFrame

En p0sts anteriores hemos visto como obtener ese dato con la antigua Rest API de Facebook. En este post vamos a mostrar como obtener el identificador del usuario con el nuevo SDK de PHP para Facebook, este ejemplo en concreto sirve para una aplicación en modo Canvas con iFrame.

He preferido hacer el ejemplo para el modo iFrame ya que con este se puede obtener el identificador de manera automática de la API de Facebook, mientras que con el modo FBML con el nuevo SDK se requiere siempre la aceptación del usuario.

Código para SDK de PHP

Pero volvamos a lo que nos importa, ¿Cómo obtenemos el identificador del usuario con el nuevo SDK para PHP? Pues muy sencillo:

<?php

require './fb-lib/facebook.php';

$facebook = new Facebook(array(
'appId'  => 'IDENTIFICADOR DE APLICACIÓN'',
'secret' => 'CLAVE DE LA APLICACIÓN',
'cookie' => true,
));
?>

<?php
try {
$me = $facebook->api('/me');
echo("Id usuario:". $me["id"] ."<br/>");
} catch (FacebookApiException $e) {
error_log($e);
}
?>

<?php
if ($facebook->getSession()) {
echo '<a href="' . $facebook->getLogoutUrl() . '">Desconectar</a>';
} else {
echo '<a href="' . $facebook->getLoginUrl() . '">Acceder</a>';
}
?>

Recordad que para que este código os funcione necesitáis:

  • La aplicación debe estar en modo iFrame
  • El código es para una aplicación en modo canvas
  • Debéis tener activado en la configuración de la aplicación > Migraciones  la casilla New SDK
  • La ruta de la librería de Facebook debe coincider con la ruta puesta en el require.
  • Debéis sustituir el identificador del usuario y la clave secreta por la vuestra.

Os adjunto en formato ZIP la aplicación para que la probéis.

Actualización: Para evitar que cuando cargáis la aplicación se vuelva loca y recargue una y otra vez la pantalla tenéis que utilizar este código (con vuestros datos):

require 'fb-lib/facebook.php';

$facebook = new Facebook(array(
    'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
    'domain' => 'DOMINIO',
	'req_perms' => 'email,publish_stream'
));

$session = $facebook->getSession();

if (!$session) {
 
    $url = $facebook->getLoginUrl(array(
               'canvas' => 1,
               'fbconnect' => 0,
   			   'req_perms' => 'email,publish_stream,user_photos'
           ));
 
    echo "<script type='text/javascript'>top.location.href = '$url';</script>";
    

}else{

    try {
 
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

 
    } catch (FacebookApiException $e) {
 
		$url = $facebook->getLoginUrl(array(
				   'canvas' => 1,
				   'fbconnect' => 0,
				   'req_perms' => 'email,publish_stream,user_photos'
			   ));
	 
		echo "<script type='text/javascript'>top.location.href = '$url';</script>";
		
 
    }
}

20 comentarios sobre “Desarrollo: Obtener el id de un usuario con el nuevo SDK de PHP en modo XFBML

  • el 26 Julio, 2010 a las 2:05 am
    Permalink

    No se por que no me imprime la ID…

    Tenes idea?

    Respuesta
  • el 10 Noviembre, 2010 a las 8:35 pm
    Permalink

    Hola estoy haciendo una aplicacion y al final quiero darle la opcion al usuario de cambiar su imagen de perfil por una imagen que yo le ofresca, esto lo estoy haciendo con la api de php, pero no encuentro nada referente a como cambiar la imagen.

    cualquier ayuda es de mucha utilidad.

    gracias.

    Respuesta
  • el 24 Enero, 2011 a las 9:09 pm
    Permalink

    Cuando en facebook te solicitan permiso para abrir una aplicación y entre otras cosas pueden acceder a tu identificación de usuario ¿esto es seguro o es mejor no permitir la aplicación?
    Gracias.

    Respuesta
  • el 1 Febrero, 2011 a las 4:50 pm
    Permalink

    Hola Gabriel, estoy perdido y confundido, resulta que tenía un ID de aplicación en facebook, borré esa aplicación y ahora cuando intento crear una aplicación nueva me pide “Por favor ingresa el código de confirmación enviado a tu teléfono” pero no recuerdo ese código porque no tengo mas ese numero, ni ese telefono; hay alguna manera de recuperar ese código o pedir uno nuevo? hasta el momento no lo he conseguido. Muchas gracias. Pablo

    Respuesta
  • el 1 Febrero, 2011 a las 7:46 pm
    Permalink

    Siento no poder ayudarte, el problema de confirmar la cuenta vía sms es muy común, a mí me costó lo mío en intentonas, y eso que por aquel entonces aparecía Orange como operador a elegir.

    Respuesta
  • el 1 Febrero, 2011 a las 8:36 pm
    Permalink

    gabriel, muchas gracias por tu tiempo, seguiré intentando. saludos. Pablo

    Respuesta
  • el 20 Junio, 2011 a las 1:02 pm
    Permalink

    Hola
    Tengo un problema al desarrollar una aplicación de Facebook.
    Va todo correcto hasta el momento de solicitar permisos al usuario,si el usuario acepta en lugar de aparecer el contenido dentro del iframe me redirecciona a la página del servidor.Como si me echara fuera de Facebook.
    Si vuelvo a entrar en la aplicación funciona perfecto,es solo la primera vez despues de dar los permisos,sabes a que puede deberse esto?
    Gracias

    Respuesta
  • el 3 Julio, 2011 a las 1:13 am
    Permalink

    como hago para hacerle un echo al correo electronico del usuario, agradeceria mucho la ayuda

    Respuesta
  • el 14 Noviembre, 2011 a las 6:45 pm
    Permalink

    hola. gabriel necesito de tu gran ayuda, en el facebook crearon una cuenta nueva q se utiliza puro para tratar mal a las mujeres, agregando fotos de ellas y las insultan de mil maneras. quiera saber o q me ayudar a rastrear a esa cuenta de facebook. o si no se puede rastrear entonces hackearla. para eliminarla o eliminar todo lo q han colocado. .ES DE GRAN AYUDA. MUCHA GENTE TE LO AGRADECERA.

    Respuesta
  • el 15 Noviembre, 2011 a las 8:47 am
    Permalink

    Hola Jesús,

    Habla con varios amigos y denunciad la cuenta, Facebook seguro que tomará medidas pronto.

    Saludos,

    Respuesta
  • el 23 Diciembre, 2011 a las 4:34 am
    Permalink

    hola, estoy desarrollando un sistema de encuesta o poll. Mi consulta es como puedo hacer para que un usuario puede efectuar un voto unicamente, me interesaria que fuera por el id del usuario, ya que por cookie podría votar tantas veces quiera como pc tenga a mano… Gracias de antemano

    Respuesta
  • el 23 Diciembre, 2011 a las 8:13 am
    Permalink

    Hola Christian,

    Yo lo que hago es coger el id de usuario de Facebook del usuario y lo almaceno en base de datos para que no pueda volver a votar por un candidato concreto.

    El id de usuario lo obtienes con $me = $facebook->api(‘/me’);

    Debes haber inicializado tu app con la API de Facebook previamente.

    Saludos,

    Respuesta
  • el 23 Diciembre, 2011 a las 3:05 pm
    Permalink

    Gracias Gabriel por responderme, pero entonces debo utilizar ambos codigos descritos arriba… o solamente tomo el primero, es que estoy incursionando por primera vez en el mundo de aplicaciones de facebook…

    Respuesta
  • el 24 Diciembre, 2011 a las 10:04 am
    Permalink

    Tienes que usar el código completo de arriba pero recuerda poner en el mismo tu id de la aplicación y tu secret key.

    Respuesta
  • el 23 Enero, 2012 a las 6:02 pm
    Permalink

    Hola Gabriel
    Felicidades por tu blog y tu aporte a todos los neófitos.

    Te queria preguntar qué he de añadir en mi codigo para detectar que la persona que entra ES o NO es FAN de la Página de Facebook.

    Te agradezco tu ayuda, es muy imprtante para mi y no encuentro nada..

    Saludos,

    Marcos

    Respuesta
  • el 2 Marzo, 2012 a las 4:16 am
    Permalink

    Gabriel, existe alguna forma de saber que post o comentarios son de un determinado pais o region. Quiero filtrarlas.

    De antemano muchas gracias.

    Respuesta
  • el 28 Septiembre, 2012 a las 11:07 am
    Permalink

    Hola.
    Lo primero gracias por compartir tus conocimientos con todos.
    Mi cuestión es que no consigo recoger el email del usuario para poderlo relacionar en mi base de datos.
    Estoy utilizando el método $user_profile[‘email’]. Sí funciona con otros campos como nombre, quotes, username, id, etc.
    También he añadido ‘req_perms’ => ‘email,publish_stream’.
    A ver si me puedes echar una mano.
    Gracias!!!
    😉

    Respuesta

Deja un comentario

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

Sígueme