Domanda

sto sviluppando utilizzando il Facebook PHP SDK.

Ho voluto fare in modo che quando l'utente accede da Facebook, verranno automaticamente disconnessi da mio sito troppo.

Sto usando il seguente codice per rilevare la sessione, utilizzando il cookie di sessione:

$facebook->getUser();

Per qualche ragione, la funzione getUser() restituisce comunque l'utente di Facebook ID, anche dopo che hanno effettuato il logout da Facebook sul loro sito web.

I Am di rilevare la prima sessione con un'altra funzione?

Sull'esempio documentazione ufficiale qui , è il seguente estratto da loro commenti:

// 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.

Questo mi portano a credere che il cookie di sessione per Facebook diventerebbe impostata su Facebook di logout?

Cordiali saluti,

Luca

È stato utile?

Soluzione

Ho lo stesso problema!

L'FB PHP SDK consente di risparmiare quelle cose in $ _SESSION! È possibile eliminare in questo modo quando il tuo utente fa clic Esci:

$_SESSION['fb_'.APP_ID.'_user_id'] = '';
$_SESSION['fb_'.APP_ID.'_access_token'] = '';

Anche se questa non è la soluzione definitiva, funziona per ora.

Apprezzo i commenti e le soluzioni su questo!

Altri suggerimenti

voglio dare un'alternativa, in un modo che non c'è bisogno di gestire roba sessione. Anche se, devo avvertirvi questo è più lento di ripulire la sessione, perché si basa su una nuova richiesta. Quello che stiamo facendo nel seguente codice è quello di verificare su Facebook se il token è ancora valido. Qui è:

try {
    $facebook->api('/me','GET');
    $logged = true;
} catch(FacebookApiException $e) {
    $logged = false;
}

Nel mio caso, mi stava facendo tutto utilizzando l'SDK JavaScript, quindi non ho potuto sessione pulita su logout. Ma nella mia pagina di destinazione, mi è stato bisogno di un lavoro intorno per verificare prima di inviare la parte posteriore di risposta.

Se sei di fronte qualcosa di simile, sicuramente una buona soluzione.

Il problema sembra essere in php-sdk in basefacebook.php a line 567

         protected function getSignedRequestCookieName() {
         return 'fbsr'.$this->getAppId();}

Questo metodo restituisce il nome del cookie SDK sta cercando. Tuttavia, javascript-sdk usa 'fbs_' prefisso. Modificare questo a 'fbs_' e funziona bene.

return 'fbs'.$this->getAppId();}
$facebook->destroySession();

Per distruggere la sessione è anche possibile utilizzare: $ Facebook-> destroySession ();

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top