Ich benutze Facebook php-sdk in meinem iframe facebook app, um Benutzer Login-Status zu erhalten. Gleich nachdem ich mich über Facebook-Konto > Abmelden Link abmelden, ist die Sitzung noch nicht zerstört. Ich muss ein paar Minuten warten, bevor alte Sitzung abläuft, dann wird meine App wieder den richtigen Login-Status erhalten.
Ich erwarte, dass Facebook sich selbst und die Sitzung beendet, wenn sich der Benutzer abmeldet. Wie kann ich die Sitzung manuell beenden?
Hier ist mein Code:
$initParams = array(
'appId' => $conf['app_id'],
'secret' => $conf['secret_api_key'],
'cookie' => TRUE,
);
$fb = new Facebook($initParams);
$fb->getSession(); // will return a session object eventhough user signed out!
GELÖST:
aufrufen $fb->api('/me')
zerstört die Sitzung, wenn sich der Benutzer zuvor abgemeldet hat. Ich habe meinen Code wie folgt geändert:
if ($session)
{
try
{
$fbuid = $fb->getUser();
$me = $fb->api('/me');
}
catch(FacebookApiException $e){}
}
Wenn der API-Aufruf erfolglos ist, $session
wird auf NULL gesetzt. Sehr seltsames Verhalten, ich erkläre nicht alles, was hier vor sich geht, aber es löste mein Problem, dass das Rest-Session-Objekt nicht über getSession()
méthode.