2011-08-15 24 views
8

Estoy usando el ejemplo que no es JS del FB PHP SDK más reciente. Funciona bien, excepto cuando un usuario cierra su navegador y vuelve a abrir la página. Deben hacer clic en el enlace de inicio de sesión de FB nuevamente.Facebook PHP SDK, cómo mantener un inicio de sesión persistente

Supongo que $ facebook-> getUser() maneja las cookies.

Código:

 require 'sdk/facebook/src/facebook.php'; 
     $facebook = new Facebook(array(
     'appId' => 'test', 
     'secret' => 'test', 
     'cookie' => true)); 


// Get User ID 
$user = $facebook->getUser(); 

// We may or may not have this data based on whether the user is logged in. 
// 
// If we have a $user id here, it means we know the user is logged into 
// Facebook, but we don't know if the access token is valid. An access 
// token is invalid if the user logged out of Facebook. 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

?> 

¿Hay un paso adicional que me falta aquí? Encontré código aquí para extraer datos de las cookies de FB: facebook auto re-login from cookie php

Aparentemente, ¿eso ya no es necesario con el SDK?

Respuesta

2

No es posible prescindir del lado del cliente.

Tu script simplemente no tiene información suficiente para saber qué usuario solicitó la página.

Y no es posible hacer nada con las cookies, ya que la sesión de Facebook es un estado dinámico que se almacena en los servidores de Facebook. Entonces, la única forma posible de usar JS SDK es obtener la sesión actual y usarla en el servidor.

Cuestiones relacionadas