2011-01-04 13 views
5

Con la nuova libreria di Facebook, l'oggetto FBSession è scomparso. Come posso verificare se l'utente ha una sessione valida sul suo dispositivo immediatamente quando avvia l'app senza prompt su safari o uiwebview?Controlla Facebook Connect Session su IOS

Il metodo [facebook isSessionValid] funziona su acccessToken ma accessToken viene impostato quando l'app torna da safari (o in linea uiwebview).

È possibile controllare la sessione utilizzando i cookie?

risposta

12

Dopo l'accesso, si desidera salvare la data di accesso token e di scadenza, in questo modo:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Poi, quando si carica l'applicazione, si vuole verificare se v'è un salvato Token, come this:

_facebook = [[Facebook alloc] initWithAppId:@"[app_id]"]; 
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 
if (![_facebook isSessionValid]) { 
    [_facebook authorize:_permissions delegate:self]; 
} 
else { 
    [_facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

Spero che questo aiuti!

+0

Sì, penso che questo sia il metodo che adotterò, grazie – MatterGoal

+0

Funziona alla grande. C'è tuttavia una perdita di memoria nella riga di inizializzazione _facebook (non è necessario conservare). –

+0

Buon punto, Amir. È stato modificato! Grazie – donkim

0

Sono quasi sicuro che dovrebbe verificare automaticamente se l'utente ha effettuato l'accesso, sia tramite safari o l'app per iPhone di Facebook. Se l'utente non ha effettuato l'accesso, verrà richiesto di utilizzare una delle applicazioni sopra riportate (l'impostazione predefinita è safari se l'app FB non è installata, ecco perché il simulatore apre l'FB in Safari).

+0

Grazie Danny Boy, sì è controllato tramite Safari ... ma ho bisogno di non passare da safari/uiwebView ecc per controllare se sono loggato. Esempio: accedo per la prima volta usando safari/uiwebview, chiudo l'app, poi tornando all'app vorrei che il mio utente venisse riconosciuto automaticamente con il suo nome e l'immagine di facebook – MatterGoal

+0

L'oggetto di Facebook stesso controllerà se l'utente è effettuato l'accesso utilizzando [self isSessionValid] quando si tenta di eseguire un'azione. Se l'utente non ha effettuato l'accesso, prenderà l'azione appropriata per registrarli. –

+0

Guardando il codice isSessionValid, ho calcolato che controlla la proprietà accessToken e la sua scadenza. Ma questa proprietà viene impostata solo dopo un'azione di login (o un'azione di safari/uiwebview/FBapp prompt). Quindi non riesco a trovare un modo per accedere a queste informazioni senza mostrare almeno una finestra di dialogo FB. – MatterGoal

Problemi correlati