2016-04-22 29 views
0

Hallo, ich versuche, mit Firebase und Swift zu arbeiten, aber ich habe einige Probleme, Benutzer zu authentifizieren und sie über App Neustarts persistent zu machen.Persistente Benutzerauthentifizierung Firebase Swift

Ich benutze Twitter authHelper, die bei der Authentifizierung ein FAuthData-Objekt zurückgibt, das die Benutzer-UID und all diese Dinge enthält.

Die Sache ist, wenn ich (oder das System) die App kille alle Authentifizierungs-Sache wegbläst und ich muss mich neu anmelden, weil ich das "authData" Objekt nicht speichern.

Wie soll ich es tun?

Vielen Dank

+0

Firebase behält das Authentifizierungstoken automatisch im Schlüsselbund des Benutzers bei. Wenn Sie [Authentifizierungsstatus überwachen] (https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication) in Ihrem View-Controller verwenden, sollte es wiederhergestellt werden. Aber ohne deinen Code zu sehen, ist es unmöglich zu sagen, was vor sich geht. Bitte geben Sie einen [MCVE] (http://stackoverflow.com/help/mcve) an. –

+0

Verwenden Sie RealmSwift ist die beste Alternative von NSUserDefaults, Realm arbeitet schneller als NSUserDefaults. –

Antwort

1

Der beste Weg, dies zu tun ist NSUserDefaults verwenden. Dies kann auf folgende Weise durchgeführt werden (dies setzt voraus, Sie verwenden FIRAuth aber Twitter Login wird Ihnen die gleiche authData):

FIRAuth.auth()!.createUserWithEmail(email, password: pwd, completion: { authData, error in 

      if error == nil { 
       //enable automatic login for future usage 
       NSUserDefaults.standardUserDefaults().setValue(authData?.uid, forKey: "uid")  
}) 

Wenn der Benutzer die App das nächste Mal geöffnet wird, gehen Sie wie folgt überprüfen, ob oder der Benutzer hat sich vorher angemeldet:

if NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID) != nil { 
     dispatch_async(dispatch_get_main_queue()) { 
      [unowned self] in 
      self.performSegueWithIdentifier(SEGUE_LOGGED_IN, sender: nil) 
     } 
    }