Foros del Web » Programando para Internet » PHP »

[RESUELTO] API Facebook PHP - Facebook Connect (Error Session key invalid or no...)

Estas en el tema de [RESUELTO] API Facebook PHP - Facebook Connect (Error Session key invalid or no...) en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando integrar Facebook Connect... bueno, de hecho creo que ya quedó integrado, conecta, obtiene el uid, el basic profile, etc… Pero ...
  #1 (permalink)  
Antiguo 05/04/2009, 04:41
 
Fecha de Ingreso: marzo-2007
Mensajes: 14
Antigüedad: 17 años, 1 mes
Puntos: 5
Información

Hola a todos.

Estoy intentando integrar Facebook Connect... bueno, de hecho creo que ya quedó integrado, conecta, obtiene el uid, el basic profile, etc…

Pero tengo un problema, y es que si estando logueado con Facebook Connect, yo cierro la sesión en Facebook.com, al volver a mi sitio y recargar, me sale el siguiente error:

Fatal error: Uncaught exception 'FacebookRestClientException' with message 'Session key invalid or no longer valid'

Entiendo que se debe a que yo sigo intentando trabajar con esa sesión, que fue cerrada desde Facebook.com, entonces dicha sesión ya no existe y por eso se produce el error…

Mi pregunta es… ¿Cómo averiguar si la sesión todavía existe o no existe? Es decir… ¿Cómo saber si el usuario cerró sesión en Facebook y asi poder cerrarla en mi sitio y de esa forma evitar el error?

Desde ya, muchas gracias!!

Saludos.

Bueno... ya lo resolví

Finalmente lo que es hago es catchear el error y listo...

No se si es la solución más óptima, pero funciona bien...

Si alguien tiene el mismo error que tenía yo, aquí les dejo el source code comentado:

h t t p : // está separado porque el foro piensa que a través de las etiquetas PHP estoy pasando URLs de Spam xD

Código PHP:
<?php
require_once 'facebook/facebook.php'//Ruta de la api...

$Aplicacion 'Ingresa aquí la Key que identifica a tu aplicación...'//No olvides ingresar la key de tu aplicación
$ClaveSecreta 'Ingresa aquí tu SecretKey...'//No olvides ingresar la clave proporcionada por FB

$Facebook = new Facebook($Aplicacion$ClaveSecreta);

$appcallbackurl "H T T P : //".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

$Logueado 0// Declaramos que NO estamos logueado (más abajo definiremos si es que lo estamos o no)

If ($Facebook->get_loggedin_user()) //Obtenemos los datos del usuario logueado (si es que existen)
//si existen
    
try //probamos de obtener los datos de la sesión
    
{
        
$uid $Facebook->require_login(); //obtenemos el id del user en FB
                        
        
$user_details $Facebook->api_client->users_getStandardInfo($uid, array('last_name','first_name')); //intentamos obtener un poco de información del perfil
        
$Nombre $user_details[0]['first_name']; //Almacenamos los datos del array
        
$Apellido $user_details[0]['last_name']; //Seguimos con la matriz, esta vez almacenamos el Apellido
        
$Logueado 1//Declaramos que SI estamos logueado (aunque lo estamos probando todavía)
    
}
    catch(
Exception $e//Intentamos capturar algún error debido a si la sesión venció, o el usuario cerró sesión desde FB o cualquier otro motivo que haya producido la caducación de la sesión y por lo tanto un error
    
{
        
$Logueado 0//si es asi, si pasó algo de eso, informamos que entonces NO estamos logueados (antes por existir un $uid dijimos que lo estabamos)
    
}
}

If (
$Logueado == 1//en caso de existir un $uid y no haber pasado por la captura del error, la variable $Logueado tendrá el valor de 1 que le asignamos más arriba, asi que por lo tanto mostramos lo que corresponda a estar logueados.
{
    
?>
    Bienvenido <b><? echo "$Nombre $Apellido"?></b>
    <br><br>
    Seguro que lo más conveniente será almacenar tu $uid (<? echo $uid?>) en la base de datos y trabajar contigo como si fueras un usuario registrado via web.
    <br><br>
    Saludos!
    <?

else 
//Si $Logueado es diferente a 1, porque la variable $uid está vacía o porque se produjo el error debido a la sesión caducada, entonces mostramos el botón de Facebook Connect...
{
    
?>
    Bienvenido Desconocido, por favor, presiona sobre el botón e inicia sesión
    <br><br>
    <fb:login-button length="long" onlogin="location.href='<? echo $_SERVER['REQUEST_URI'];?>'"></fb:login-button>
    <script type="text/javascript" src="H T T P : //static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>
    <script type="text/javascript">
    FB.init("Ingresa aquí la Key que identifica a tu aplicación...","xd_receiver.htm");
    </script>
    <?
}   
?>
Bueno... espero que sirva

Saludos

Última edición por GatorV; 05/04/2009 a las 11:26
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:40.