2016-09-05 2 views
1

Ich habe so viele Fragen über die Autorisierung in Firebase gesehen, aber keiner von ihnen geholfen (der Autorisierungsweg war ein bisschen anders). Ich bin nicht so erfahren iOS-Entwicklung, so brauche ich Hilfe nicht nur im Code, sondern auch in UX. Unten ist mein Code:iOS - Firebase Autorisierung/Login mit E-Mail

func loginDidFinish(email: String, password: String, type: LFLoginController.SendType) { 

    // Server call implementation here 
    if type == .Login { 
     if user.exists { // check if user exists 
      FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { 
       navigationController?.popViewControllerAnimated(true) 
      }) 
     } else { 
      self.controller.wrongInfoShake() 
     } 
    } else { // type == .SignUp 
     if user.exists { // check if user exists 
      FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (user, error) in 
       // 
      }) 
     } else { 
      FIRAuth.auth()?.createUserWithEmail(email, password: password, completion: { (user, error) in 
       // 
      }) 
     } 
    } 

    print(email) 
    print(password) 
    print(type) 

    // handling errors 
    if email == "" && password == "" { 
     controller.wrongInfoShake() 
    } else { 
     navigationController?.popViewControllerAnimated(true) 
    } 
} 

Dies ist meine Funktion für die Anmeldung. Zuerst habe ich ein Framework für die Login-Seite (ja, ich bin zu faul, um das selbst zu tun) von here. Und ich habe Firebase als Backend-Server verwendet, um diese Konten zu speichern.

Nun kann ich nicht überprüfen, ob der Benutzer bereits im System vorhanden ist. Auch wenn Fehler auftreten, bietet die LFLoginController Lib mit der Funktion wrongInfoShake(), die ich jedes Mal verwenden, wenn ein Fehler auftritt, aber ich bin mir nicht sicher, ob ich die Beschreibung liefern sollte, die schiefgelaufen ist (bedeutet zu präsentieren AlertControl) (das ist UX Frage btw).

Und wenn der Typ zu SignUp geändert wird, wird es in Ordnung sein, wenn der Benutzer der E-Mail und Passwort, das bereits existiert auch, dass Informationen mit anmelden, wenn der Benutzer SignUp verwendet geben?

Wenn das SignUp läuft, sollte ich irgendwelche Fehler behandeln?

Antwort

2

Sie haben ein bisschen Fragen hier, und ich werde versuchen, sie alle zu beantworten:

  1. Der beste Weg, schon, wenn ein Benutzer überprüfen vorhanden ist, ist in den completionBlock von signInWithEmail() und createUserWithEmail(), wenn Es ist ein Fehler passiert. Sie wissen, dass dies einer der Fälle sein könnte. Wenn Sie noch eine Methode dafür haben möchten, gibt es einen neuen Aufruf an die API mit dem Namen fetchProvidersForEmail(), der ein Array von Providern zurückgibt, in Ihrem Fall die E-Mail.

  2. Verwenden Sie keinen Alert-Controller, der überladen würde, zeigen Sie einfach eine Fehlerkennung an, die Login was incorrect oder An error occured oder einen anderen Fehler angibt, den Sie anzeigen möchten. Versuchen Sie Warnungen zu vermeiden, wenn sie nicht wirklich benötigt werden.

  3. Der Benutzer ist bereits daran gewöhnt, den Fehler User already exists zu erhalten, wenn er versucht, sich mit seiner E-Mail anzumelden, und aus der UX-Perspektive würde es einige Fehler verursachen, wie er es von einem klaren, neuen Konto denken würde , also nein, zeige nur ein Label, das besagt, dass der Benutzer existiert, es ist sehr unprobabilistisch, dass jemand anderes sich mit seiner E-Mail registriert hat.

  4. Wenn die Anmeldung, Feuerbasis kann den Fehler geben, dass die E-mail already exists, wie ich in Punkt 3 erwähnt, und wenn die E-Mail-Handhabung falsch war, kann er auch die Invalid e-mail geben. Dieser und alle anderen Fehler sollten behandelt werden, indem dem Benutzer eine Nachricht angezeigt wird oder er verwirrt wird. Um sie zu behandeln, überprüfen Sie einfach den Fehler in der completion.

1

Sie können das überprüfen Firebase UI Auth:

„FirebaseUI bietet eine Drop-in-Auth-Lösung, die die Benutzeroberfläche für die Unterzeichnung fließt Griffe in Benutzer mit E-Mail-Adressen und Passwörter, die Google-Anmeldung und Facebook Login: Es ist auf Firebase Auth aufgebaut.

Die FirebaseUI Auth-Komponente implementiert Best Practices für die Authentifizierung auf mobilen Geräten und Websites, die die Anmelde- und Anmeldungskonvertierung für Ihre App maximieren können. Es behandelt auch Randfälle wie Kontowiederherstellung und Kontoverknüpfung, die sicherheitsrelevant und fehleranfällig sein können, um korrekt behandelt zu werden.

FirebaseUI kann leicht mit dem Rest Ihrer App visuellen Stil passen angepasst werden, und es ist Open Source, so dass Sie nicht bei der Realisierung der Benutzererfahrung Sie constrained.“