Foros del Web » Programando para Internet » PHP »

Cerrar sesion con Facebook Connect con PHP, urgentillo

Estas en el tema de Cerrar sesion con Facebook Connect con PHP, urgentillo en el foro de PHP en Foros del Web. Hola a todos, Llevo haciendo toda esta semana un sistema para integrar Facebook en mi web. El sistema de autentificacion funciona de lujo. Mi problema ...
  #1 (permalink)  
Antiguo 28/01/2012, 03:26
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Cerrar sesion con Facebook Connect con PHP, urgentillo

Hola a todos,

Llevo haciendo toda esta semana un sistema para integrar Facebook en mi web. El sistema de autentificacion funciona de lujo. Mi problema es cuando un usuario se quiere desconectar.

Uso el SDK de PHP de Facebook.

Código PHP:
$params = array( 'next' => 'http://miweb.com/' );
$url=$facebook->getLogoutUrl($params);
echo 
'<a href="'.$url.'">Desconectar en FB</a><hr/>'
El problema es que cuando los usuarios clican en el desconectar no se desconectan. El link de desconexion les envia a Facebook y Facebook les dirige a mi web. Todo parece correcto, pero no. No se desconecta.

Podria eliminar la session del usuario a lo bruto con PHP, con session_destroy, pero no es lo mismo, ya que cuando Facebook cierra la session la cierra de un modo diferente, ya que la cierra en "sus registros".

La pregunta:
¿Alguien sabe por que me puede estar pasando esto?, es tan raro. Lo estoy haciendo en el index de mi web. Sin ninguna historia rara. :P . No me parece que es cuestion de usar mal la API, ya que he consultado muchos ejemplos. Me parece que tiene que ver con un problema exterior a Facebook y mas bien con un problema con mi servidor, cookies de session o algo. Pero no encuentro ningun motivo.

Se que es un poco a ciegas...
¿Pero a alguien se le ocurre alguna idea?

pd: para colmo me corre una prisa brutal.
  #2 (permalink)  
Antiguo 28/01/2012, 11:23
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Cerrar sesion con Facebook Connect con PHP, urgentillo

La manera documentada de desloguearse es hacer un enlace con este href:
Código PHP:
https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN 
donde YOUR_URL es la url de regreso a tu sitio y ACCESS_TOKEN es el identificador que obtenés al loguearte con scripts como este (u otros):
Código PHP:
<?php 

   $app_id 
"YOUR_APP_ID";
   
$app_secret "YOUR_APP_SECRET";
   
$my_url "YOUR_URL";

   
session_start();
   
$code $_REQUEST["code"];

   if(empty(
$code)) {
     
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     
$dialog_url "http://www.facebook.com/dialog/oauth?client_id=" 
       
$app_id "&redirect_uri=" urlencode($my_url) . "&state="
       
$_SESSION['state'];

     echo(
"<script> top.location.href='" $dialog_url "'</script>");
   }

   if(
$_REQUEST['state'] == $_SESSION['state']) {
     
$token_url "https://graph.facebook.com/oauth/access_token?"
       
"client_id=" $app_id "&redirect_uri=" urlencode($my_url)
       . 
"&client_secret=" $app_secret "&code=" $code;

     
$response = @file_get_contents($token_url);
     
$params null;
     
parse_str($response$params);

     
$graph_url "https://graph.facebook.com/me?access_token=" 
       
$params['access_token'];

     
$user json_decode(file_get_contents($graph_url));
     echo(
"Hello " $user->name);
   }
   else {
     echo(
"The state does not match. You may be a victim of CSRF.");
   }

 
?>
  #3 (permalink)  
Antiguo 28/01/2012, 19:13
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Cerrar sesion con Facebook Connect con PHP, urgentillo

Gracias Panino5001,

La verdad es que me estoy volviendo loco. Una cosa que es sencilla me esta costando la vida. :D.

Fuera de bromas. Aun no lo he conseguido. Se conecta, pero lo que es desconectarse nada. Al final voy ha tenerlo que hacer a lo bestia y borrar todos los cookies del usuario.
No me gusta hacerlo... pero bueno.

Gracias por el codigo.

El que uso es muy parecido.

Adios!
  #4 (permalink)  
Antiguo 28/01/2012, 19:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Cerrar sesion con Facebook Connect con PHP, urgentillo

Por lo que he leído en Internet, la única forma de hacer logout, es usando el Javascript SDK, y usando FB.logout.
  #5 (permalink)  
Antiguo 28/01/2012, 20:12
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Cerrar sesion con Facebook Connect con PHP, urgentillo

gracias GatorV... voy a mirarlo
  #6 (permalink)  
Antiguo 04/02/2012, 18:58
 
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Cerrar sesion con Facebook Connect con PHP, urgentillo

Hola, la solucion es colocar un link de salida

<a href="#" onclick="FB.logout(function(response) { console.log('cerrar session.');});">cerrar session</a>

espero les ayude

Etiquetas: cerrar, connect, facebook, registro, usuarios
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:32.