sto migrando il mio vecchio FB app per la nuova API grafico utilizzando il PHP APICome controllare se l'utente è loggato con il nuovo facebook php API
Ho due pagine: quelli pubblici (che non richiedono l'accesso utente) e quelli privati (che fanno)
Quindi il codice di ogni singola pagina php nella mia applicazione funziona come segue:
if (this_page_requires_user_login){
$facebook = new Facebook(...) ;
$session = $facebook->getSession ;
if (!$session){
$url =$facebook.getLoginUrl(array(next => current_page);
echo "<fb:redirect url=$url/>" ;
}
// the rest of the code continues here
Ora, come potete vedere, questo modo di lavorare in avanti ogni singola pagina per l'url di accesso e mentre funziona, è anche lento e aggiunge lo & session = {bla} stringa in url molto singolo.
Ho bisogno di un modo per verificare dove un utente ha già effettuato l'accesso prima di reindirarlo alla pagina di accesso. Ma non riesco a trovare tale metodo nel PHP API. Qual'è il miglior modo per farlo?
EDIT
Questo sembrava fare il trucco
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
// here comes your code for user who is logged in
}
} catch (FacebookApiException $e) {
login()
}
}else{
login()
}
function login(){
$url =$facebook.getLoginUrl(array(next => current_page);
echo "<fb:redirect url=$url/>" ;
}
Se è stato memorizzato il token di accesso e lo usano, questo non funziona, perché la chiamata API funziona ancora senza un'eccezione, ma poi quando li si reindirizza al getLogoutUrl per esempio, li invia li alla homepage di Facebook, invece di inviarti di nuovo al tuo sito web – andrewtweber
@andrewtweber esattamente. Grazie. –
È stato necessario decodificare l'url in precedenza, ecco perché non si è reindirizzati: Php echo rawurlencode ($ logoutUrl); ?> –