2016-05-26 28 views
8

Firebase'in yeni sürümünde FIRAuthErrorNameKey öğesinin nasıl okunacağını bulmakta sorun yaşıyorum. Şimdiye kadar sahip olduğum şudur, ancak "allow errorCode = FIRAuthErrorNameKey" satırı yanlıştır. Firebase documentation'u okumadan, kullanıcı kodundan hata koduna erişmeyi denedim, ancak başarısız oldu ve fikirlerim tükendi.Firebase Auth Hatası Okunuyor (Firebase 3.x ve Swift)

// Send request to Firebase to add user to register user 
FIRAuth.auth()?.createUserWithEmail(emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in 

     // Check for errors and respond to user accordingly. 
     if error != nil { 

      let errorCode = FIRAuthErrorNameKey 

      switch errorCode { 

      case "FIRAuthErrorCodeEmailAlreadyInUse": 

       // Add logic accordingly 

      case ...: 

       // Add logic accordingly 

      case default: 

       // Add logic accordingly 
      } 
     } 
}) 

cevap

25

Bunu deneyin. Bu benim için çalışıyor. Ayrıca, bunu projenize yapıştırdıktan sonra. Tüm FIRAuthErrorCode kodlarını görmeniz gerekiyorsa. Farenizi .ErrorCodeInvalidEmail üzerinde gezdirin, ardından sol fare tuşunu basılı tutun ve geri kalanını gösterecektir.

Herhangi bir sorun yaşarsanız, bana bildirin ve yardımcı olmaya çalışın. İyi şanslar!

let errcode = FIRAuthErrorCode(rawValue: error!._code) 
    if errcode == FIRAuthErrorCode.errorCodeRequiresRecentLogin{ 

      //do error handling here 

    } 
+1

Bir çekicilik gibi çalıştım! Yardım için teşekkürler ve hata kodlarını nasıl bulacağınızı düşünün. Maalesef, Firebase Kılavuzu sayfasında (https://firebase.google.com/docs/auth/ios/errors) Dize hata kodlarını nasıl kullanacağımı asla anlayamadım, ama bu hile! – Ben

+1

Firebase artık "FIR" öğesini çağrılarının önüne çıkardı. Yani sadece "AuthErrorCode" olacak – theblindprophet

+2

Onlar da hata enums yeniden adlandırılmış görünüyordu. Eğer 'case.' Yazarsanız, hepsini göreceksiniz. – ffritz

1

Parçacıktan, anahtarınızdaki FIRAuthErrorNameKey kodunu değil, hata kodunu kullanmaya çalıştığınız anlaşılıyor. Bu durumda kullanmak istediğiniz geri aramada geri dönen NSError nesnesinin hata kodudur. Kullanım:

let errorCode = error.code 

Bu yolu errorCode değişken döndürüldü hata kodu yer alır ve size hata mantığını uygulayarak devam edebilirsiniz.

+0

sayesinde var Beni doğru yolda bulman için. Bu kod, yukarıda kurulumumla çalışmadı çünkü .code bir int döndürür. Kodumu hata kodlarıyla eşleştirmek için tekrar çalışıyorum. Bunları Firebase kılavuzlarında bulamıyorum, ancak diğer yanıttaki tüm hata kodlarını görmek için the_pantless_coder tarafından belirtilen yaklaşımı izlerseniz, int hata kodlarını buradan alabilirsiniz. Teşekkürler! – Ben

0

kodunuzu çalışıyor. Neler olup bittiğini anlamak için neredeyse 3 saat harcadım. İşte şimdi nasıl göründüğü: cevapların

Auth.auth().createUser(withEmail: email, password: password) { (user: User?, error) in 

     if error != nil { 
     // Handle the error (i.e notify the user of the error) 

      if let errCode = AuthErrorCode(rawValue: error!._code) { 

       switch errCode { 
       case .invalidEmail: 
        print("invalid email") 
       case .emailAlreadyInUse: 
        print("in use") 
       default: 
        print("Other error!") 
       } 

      } 
     } 
5

Firebase kod biraz değişti ve siz Firebase yeniyseniz bu size biraz zaman alacaktır: ben bu yardımcı olur ama aynı zamanda bunu yapabilirsiniz eğer bilmiyorum

 FIRAuth.auth()?.createUserWithEmail(email, password: password) { (user, error) in 

      if error != nil { 

       if let errCode = FIRAuthErrorCode(rawValue: error!._code) { 

        switch errCode { 
         case .ErrorCodeInvalidEmail: 
          print("invalid email") 
         case .ErrorCodeEmailAlreadyInUse: 
          print("in use") 
         default: 
          print("Create User Error: \(error!)") 
        } 
       } 

      } else { 
       print("all good... continue") 
      } 
     } 
8

Yok yukarı güncel görünmektedir, burada FirebaseAuth, ben Swift 3.x şu anda ne fikir için 4.0.0

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in 

     if let error = error as NSError? { 

      guard let errorCode = AuthErrorCode(rawValue: error.code) else { 

       print("there was an error logging in but it could not be matched with a firebase code") 
       return 

      } 

      switch errorCode { 

      case .invalidEmail: 

       print("invalid email") 

       //...