2015-07-20 23 views
13

Stiamo lavorando su un'app iOS che sta utilizzando Google per l'autenticazione con Firebase. Secondo https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase dice che i token di autenticazione scadono ogni 24 ore. Ci chiediamo se il seguente scenario è qualcosa che dobbiamo considerare:Richiesto ri-autenticazione Firebase

  1. utente si autentica con Google e Firebase
  2. La nostra applicazione ottiene un token di autenticazione Firebase che scade in 24 ore
  3. utente chiude la nostra app iOS
  4. 1 minuto prima della scadenza del token di autenticazione di Firebase, l'utente riapre l'app
  5. Un minuto dopo viene inoltrata una richiesta a Firebase. Il token di autenticazione è scaduto.

Sembra che dobbiamo riconfigurare con Firebase osservando le modifiche di autenticazione per https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication. Ma dovremo riemettere la stessa richiesta a Firebase dalla # 5 sopra? Inoltre sembra che potremmo ripetere l'autenticazione nel cancelBlock:

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 
    NSLog(@"%@", snapshot.value); 
} withCancelBlock:^(NSError *error) { 
    NSLog(@"%@", error.description); 
    // reauthenticate and then re-issue request? 
}]; 

Questo non sarebbe l'ideale, perché avremmo dovuto scrivere questo codice in tutto il mondo che facciamo una richiesta.

Quali sono le migliori pratiche per affrontare questo scenario? Firebase aggiorna automaticamente il token di autenticazione quando è prossimo alla scadenza?

+1

Nota: il valore predefinito è 24 ore, ma è possibile modificarlo nella scheda Login e autenticazione in Lunghezza sessione – sjm

+0

Che è corretto. Tuttavia, indipendentemente dall'intervallo, la domanda è se ci sarà un punto nel tempo in cui il token google oauth è valido ma il token firebase scade. I nostri esperimenti con timeout di Firebase di 30 secondi sembrano indicare che dobbiamo aggiornare manualmente i token di autorizzazione di Firebase – vjy

+1

È necessario aggiornare manualmente il token di autenticazione. È possibile monitorare [.info/authenticated] (https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication) per rilevare lo stato di modifica - una risposta migliore rispetto all'annullamento richiama. – Kato

risposta

0

Ovviamente, la domanda riguardava una vecchia versione di Firebase e il suo SDK. L'attuale versione di Firebase (3.X) ti rende più facile dal momento che Firebase ricorda come l'utente ha effettuato l'ultimo accesso alla tua app.

Quindi è necessario chiamare semplicemente FIRApp.configure() come sempre, ad es. nella vostra application: didFinishLaunchingWithOptions launchOptions: e quindi aggiungere un ascoltatore stato anche in occasione del lancio della tua app come

FIRAuth.auth()?.addStateDidChangeListener() { (auth, firUser) in 
// do something with firUser, e.g. update UI 
} 

L'ascoltatore sarà poi automaticamente essere invocato nel periodo del vostro lancio dell'applicazione per Firebase ogni volta che qualcosa cambia sull'utente ei gettoni sono gestito in background da Firebase, ovvero non devi occuparti di token scaduti. (Potrebbe essere più complesso se si utilizza uno Custom Auth System).

Problemi correlati