Ich habe eine Log-in-Szene mit Firebase Auth eingerichtet. Wenn Sie die richtigen Details eingeben, sollte sich die Szene ändern, indem Sie den "loggedIn" -Schnitt ausführen. Bei der Eingabe falscher Details sollte der Fehler auf der Konsole ausgegeben werden und nichts sollte passieren.IOS swift firebase auth falsche Anmeldung
Ich habe festgestellt, dass trotz der Übernahme des Fehlers (und Drucken auf der Konsole), der Controller immer noch den Übergang und bewegt sich zum nächsten Bildschirm (aber es "LOGGING IN" auf der Konsole nicht drucken). Dieses Verhalten sehr merkwürdig finden, irgendwelche Ideen?
ich meine Login-View-Controller unten kopiert haben:
import Foundation
import Firebase
import FBSDKCoreKit
import FBSDKLoginKit
class LogInViewController: UIViewController{
@IBOutlet weak var Email: UITextField!
@IBOutlet weak var Password: UITextField!
@IBAction func Login(_ sender: AnyObject) {
let email = self.Email.text!
let password = self.Password.text!
if (email != "" && password != ""){
FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
if(error==nil){
print("LOGGING IN")
self.performSegue(withIdentifier: "loggedIn", sender: nil)
}
else{
print("COULDNT LOG IN")
print(error)
}
})
}
else{
let alert = UIAlertController(title: "Error", message: "Enter email and password", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
}
EDIT
ich die Storyboard-ID loggedInViewControllerVC_ID zum mealViewController hinzugefügt haben in der Identitätsprüfer.
Das ist mein neuer Code:
import Firebase
import FBSDKCoreKit
import FBSDKLoginKit
class LogInViewController: UIViewController{
@IBOutlet weak var Email: UITextField!
@IBOutlet weak var Password: UITextField!
@IBAction func Login(_ sender: AnyObject) {
let email = self.Email.text!
let password = self.Password.text!
if (email != "" && password != ""){
FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
if(error==nil){
print("LOGGING IN")
let nextViewController = self.navigationController?.storyboard?.instantiateViewController(withIdentifier: "loggedInViewControllerVC_ID") as! MealViewController
self.navigationController?.pushViewController(nextViewController, animated: true)
//self.performSegue(withIdentifier: "loggedIn", sender: nil)
}
else{
print("COULDNT LOG IN")
print(error)
}
})
}
else{
let alert = UIAlertController(title: "Error", message: "Enter email and password", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
}
Ich bin jetzt ein BAD_INSTRUCTION Fehlerdetails auf erfolgreich Eingabe Login bekommen
Leider verstehe ich Ihre Antwort nicht - gibt es keine Möglichkeit, dies zu tun, ohne den Übergang vom Storyboard zu löschen und meinen ursprünglichen Ansatz zu verwenden? Es ist schwer zu folgen, welcher Controller sich auf die Login-Szene bezieht und welche auf die folgende Szene in deiner Antwort. – benjanisa
Ich habe einen Link zu einem Screenshot meines Storyboards für den Kontext hinzugefügt. Soll das Storyboard-ID das des Navigations-Controllers oder des View-Controllers sein? Wie kann ich den Navigationscontroller in den ersten viewController einbetten? Ich habe das nur durch die Storyboard-Ansicht gemacht. Könnten Sie bitte auch erklären, warum meine derzeitige Methode immer noch mit falschen Login-Daten einhergeht? – benjanisa
Bitte beachten Sie meine Updates in der obigen Ausgabe (Ich habe Änderungen vorgenommen). Haben Sie versucht, Ihren Anweisungen zu folgen - scheinen etwas falsch zu machen. – benjanisa