2010-11-22 3 views
0

J'ai une page qui permet à un utilisateur de se connecter, en utilisant l'API Facebook. Mais bien sûr, le problème est lorsque l'utilisateur change de page, la connexion doit être ré-autorisée.Facebook API Session Conundrum

Donc, dans ma page principale J'ai

$facebook = new Facebook(array(
    'appId' => 'xxx', 
    'secret' => 'xxxxxx', 
    'cookie' => false, 
)); 

$session = $facebook->getSession(); 

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

     $_SESSION['fb_session'] = $me; 
     $_SESSION['fb_session']['loginUrl'] = $facebook->getLoginUrl(); 
     $_SESSION['fb_session']['logoutUrl'] = $facebook->getLogoutUrl(); 
     $_SESSION['fb_session'] = array_merge($_SESSION['fb_session'], $session); 
    } 

    catch (FacebookApiException $e) { 
     error_log($e); 
     unset($_SESSION['fb_session']); 
    } 
} 

if ($_SESSION['fb_session']) { 
    $x = $facebook->api("/{$_SESSION['fb_session']['id']}"); 
    print "<img src='https://graph.facebook.com/{$x['id']}/picture' />";       
    print "<a href='facebook_logout.php'></a>"; 
} 
else { 

    $loginUrl = $facebook->getLoginUrl(); 
    print "<a href='{$facebook->getLoginUrl()}'>Login to Post Comment</a>"; 
} 

Et mon facebook_logout.php ressemble:

header("location:" . $_SESSION['fb_session']['logoutUrl']); 
unset($_SESSION['fb_session']); 

Maintenant, la chose est que j'ai mis la session sur le premier rendez-vous quand j'authentifié l'utilisateur. Mais que se passe-t-il s'il change son profil. Ou refuse mon site Web dans son API.

J'ai testé cela avec mon profil. Cela fonctionne bien quand je le permets. Cependant, lorsque je supprime l'application de mes paramètres de confidentialité Je vois toujours mon image et le nom, etc.

Ci-dessous la sortie fb_session

[id] => id 
[name] => Shahmir Javaid 
[first_name] => Shahmir 
[last_name] => Javaid 
[link] => http://www.facebook.com/shahmirj 
[about] => I was Born a n00b, I am still a n00b and il never be not a n00b. 
[gender] => male 
[locale] => en_GB 
[verified] => 1 
[updated_time] => 2010-11-22T15:45:22+0000 
[loginUrl] => https:// 
[logoutUrl] => https:// 
[session_key] => xxx 
[uid] => xxx 
[expires] => 1290448800 
[secret] => xxx 
[access_token] => xxx 
[sig] => xxx 

Comment puis-je réauthentifier uide donc mon heure d'expiration REMONTE haut, bien sûr, sans que l'utilisateur se connecte à nouveau?

Répondre

0

Si l'utilisateur modifie son image de profil (qui semble être tout ce que vous utilisez dans le profil) parce que vous pointez sur graph.facebook.com/USERID/picture, l'image mise à jour s'affiche. Vous pouvez utiliser l'URL de rappel facebook deauthorize qui se trouve dans l'onglet avancé des paramètres de votre application pour alerter votre application lorsqu'un utilisateur supprime votre application. Si vous stockez une liste d'ID autorisés et que vous les recherchez avant d'obtenir les données, vous pouvez désactiver la session et supprimer cet ID de la base de données, ce qui affichera de nouveau l'URL de connexion et supprimera la connexion Facebook pour cet utilisateur. votre backend.

+0

Tout l'enregistrement est l'UID et le nom. L'image de profil est extraite de l'API '$ x = $ facebook-> ("/{$ _ SESSION ['fb_session'] ['id']} "), mais mon point est, dosent qui expire. Et je suis un peu perdu à propos de l'URL de rappel désassembler –

+0

http://developers.facebook.com/docs/authentication/ - fin de la page – Gazler

+0

fait l'Id jamais changer. Une fois que j'aurai la valeur Id, cessera-t-il de m'envoyer des données si je fais '$ x-> api ('/ Id')' étant donné que l'utilisateur ne m'a pas retiré –