2015-07-20 5 views
13

Nous travaillons sur une application iOS qui utilise Google pour s'authentifier avec Firebase. Selon Firebase, les jetons auth expirent toutes les 24 heures. On se demande si le scénario suivant est quelque chose que nous devons considérer:Réauthentification Firebase requise

  1. utilisateur authentifie avec Google et Firebase
  2. Notre application reçoit un jeton d'authentification Firebase qui expire dans 24 heures
  3. utilisateur ferme notre application iOS
  4. 1 minute avant l'expiration du jeton d'authentification Firebase, l'utilisateur rouvre l'application
  5. Une minute plus tard, nous envoyons une demande à Firebase. Le jeton d'authentification a expiré.

Il semble que nous devions nous réauthentifier avec Firebase en observant les changements d'authentification par https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication. Mais devra-t-on réémettre la même requête à Firebase à partir du numéro 5 ci-dessus? il semble aussi que nous pourrions réauthentifier dans le cancelBlock:

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

Ce ne serait pas idéal parce que nous devrions écrire ce code partout où nous faisons une demande.

Quelles sont les meilleures pratiques pour gérer ce scénario? Est-ce que Firebase actualise automatiquement le jeton d'authentification lorsqu'il est proche de l'expiration?

+1

Remarque: la valeur par défaut est 24 heures mais vous pouvez la modifier sous l'onglet Connexion et authentification sous Durée de la session – sjm

+0

. Cependant, indépendamment de l'intervalle, la question est de savoir s'il y aura un moment où le jeton google oauth est valide mais le jeton firebase expire. Nos expériences avec le délai d'attente de 30 secondes Firebase semblent indiquer que nous devons actualiser manuellement les jetons auth Firebase – vjy

+1

Vous devez actualiser manuellement le jeton Auth. Vous pouvez surveiller [.info/authentifié] (https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication) pour détecter l'état de changement - une meilleure réponse que l'annulation rappeler. – Kato

Répondre

0

De toute évidence, la question portait sur une ancienne version de Firebase et de son SDK. La version actuelle de Firebase (3.X) vous facilite la tâche puisque Firebase se souvient de la dernière connexion de l'utilisateur dans votre application.

Vous devriez donc simplement appeler FIRApp.configure() comme toujours. dans votre application: didFinishLaunchingWithOptions launchOptions: puis ajoutez un écouteur d'état également lors du lancement de votre application comme

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

L'auditeur sera alors automatiquement invoqué au moment de votre lancement de l'application par Firebase chaque fois que quelque chose change au sujet de votre utilisateur et les jetons sont géré en arrière-plan par Firebase, c'est-à-dire que vous n'avez pas à traiter avec des jetons expirés. (Cela peut être plus complexe si vous utilisez un Custom Auth System).