2016-07-29 16 views
0

Ich habe eine iOS-App, die Firebase als Backend für die Authentifizierung verwendet.Erneutes Verwenden von Zugriffstoken in Firebase 3

Sobald sich ein Benutzer anmeldet und die App schließt, möchte ich nicht, dass der Benutzer seine E-Mail-Adresse und sein Passwort erneut eingeben muss. Mein Ansatz besteht darin, das Zugriffstoken nach einer erfolgreichen Anmeldung im Schlüsselbund zu speichern und dann, wenn der Benutzer zur App zurückkehrt, das Token aus dem Schlüsselbund zu verwenden, um sich anzumelden.

Ich habe versucht, mit der Methode FIRAuth.auth()?.signInWithCustomToken(customToken) { (user, error) in, aber das ist nicht ganz richtig, wie das für die Verwendung benutzerdefinierter Tokens ist, was ist nicht, was ich tue.

Gibt es eine Möglichkeit für mich, dies zu tun?

// login with email/password 
FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (firebaseUser, error) in 
    if error == nil { 
     FIRAuth.auth()!.currentUser!.getTokenWithCompletion({ (token, error) in 
     if error == nil { 
      // save token to keychain 
     } else { 
      print(error) 
     } 
     }) 

    } else { 
    print(error) 
    } 
}) 


// user comes back to app 
do { 
// get saved token from keychain 
    if let myToken = try keychain.get("token") { 
    FIRAuth.auth()?.signInWithCustomToken(myToken, completion: { (user: FIRUser?, error: NSError?) in 
     if error == nil { 
     // show post login screen 
     } else { 

     } 
    }) 
    } 
} catch { 
// error getting token from keychain 
} 

}

Antwort

0

Ich nähere dieses Problem in der falschen Richtung. Das Speichern eines Tokens ist angemessen, wenn Sie einen Authentifizierungsanbieter eines Drittanbieters wie Facebook, Google usw. verwenden und ein OAuth-Token von einem dieser Dienste erhalten.

In meinem Fall, wenn ich mich mit E-Mail und Passwort anmelde, ist kein Token erforderlich und stattdessen kann das Passwort sicher im Schlüsselbund gespeichert und später für die Anmeldung verwendet werden.