16 Stimmen

Wie meldet man Benutzer mit Facebook Connect in PHP und Zend ab?

Ich versuche, eine Connect-App mit PHP und dem Zend Framework zu erstellen. Ich habe auch ein Zend_Auth basiertes Benutzerauthentifizierungssystem. Jetzt kann ich mich mit Facebook anmelden, aber das Abmelden funktioniert nicht.

Ich muss die Zend_Auth-Identität löschen und alle Facebook-Anmeldeinformationen entfernen. Was wäre der beste Weg, dies zu tun?

Ich habe versucht facebook_client->expire_session() y facebook_client->clear_cookie_state(); zusammen und auch facebook_client->logout($next) nach dem Aufruf Zend_Auth::getInstance()->clearIdentity()

Keines von ihnen scheint zu funktionieren.

20voto

typeoneerror Punkte 53668

Sie müssen den Javascript-Client logout aufrufen erste und senden Sie sie dann an Ihr php-Logout-Skript. Also, rufen Sie .js:

FB.Connect.logoutAndRedirect("/path/to/zend/logout/controller");

Es erscheint ein modales Popup-Fenster mit der Meldung "Sie melden sich von dieser Website und von Facebook ab":

try
{
    $facebook->expire_session();
}
catch (FacebookRestClientException $e)
{
    //you'll want to catch this
    //it fails all the time
}

Normalerweise rufe ich diese Funktion auch im PHP-Logout-Skript auf, nur um sicherzugehen:

/**
 * Remove the local Facebook cookies that get set manually
 * 
 * @return void
 */
protected function _killFacebookCookies()
{
    // get your api key
    $apiKey = $this->getConfig()->getApiKey();
    // get name of the cookie
    $cookie = $this->getConfig()->getCookieName();

    $cookies = array('user', 'session_key', 'expires', 'ss');
    foreach ($cookies as $name) 
    {
        setcookie($apiKey . '_' . $name, false, time() - 3600);
        unset($_COOKIE[$apiKey . '_' . $name]);
    }

    setcookie($apiKey, false, time() - 3600);
    unset($_COOKIE[$apiKey]);       
}

0voto

Dharti Patel Punkte 119

Sie können den Facebook-Benutzer abmelden und den Benutzer auf Ihre Website-Seite mit PHP-Code wie diesem umleiten:

header("Standort: " . $facebook->getLogoutUrl(array('next'=>"http://yourwebsite.com/redirectAfterFacebookLogout.php")));

0voto

Harsh Alkutkar Punkte 381

(NEUES FACEBOOK SDK) Bei mir funktionierte getconfig() nicht, also musste ich die neuen Funktionen in der Datei base_facebook.php finden und dieses Stückchen Code hinzufügen. Dann rufen Sie es in Ihrer aufrufenden Datei auf. Rufen Sie vorher $facebook->destroySession() auf;

 public function _killFacebookCookies() 
    { 
        // get your api key 
        $apiKey = $this->getAppId();
        // get name of the cookie 
        $cookie = $this->getSignedRequestCookieName();

        $cookies = array('user', 'session_key', 'expires', 'ss'); 
        foreach ($cookies as $name)  
        { 
            setcookie($apiKey . '_' . $name, false, time() - 3600); 
            unset($_COOKIE[$apiKey . '_' . $name]); 
        } 

        setcookie($apiKey, false, time() - 3600); 
        unset($_COOKIE[$apiKey]);        
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X