2011-08-15 2 views
8

J'utilise l'exemple non-JS du FB PHP SDK le plus récent. Cela fonctionne correctement, sauf lorsqu'un utilisateur ferme son navigateur et rouvre la page. Ils doivent cliquer à nouveau sur le lien de connexion FB.Facebook PHP SDK, comment maintenir la connexion persistante

J'étais sous l'hypothèse $ facebook-> getUser() gère les cookies.

code:

 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(); 
} 

?> 

Y at-il une étape supplémentaire que je suis absent ici? J'ai trouvé le code ici pour extraire les données des cookies FB: facebook auto re-login from cookie php

Apparemment, ce n'est plus nécessaire avec le SDK?

Répondre

2

Il n'est pas possible de se passer de client.

Votre script n'a tout simplement pas assez d'informations pour savoir quel utilisateur a demandé la page.

Et il est impossible de faire quoi que ce soit avec les cookies, depuis la session de facebook est un état dynamique qui est stocké sur des serveurs facebook. Donc, la seule façon possible d'utiliser JS SDK, obtenir la session en cours et l'utiliser sur le serveur.