2016-08-11 6 views
5

Pracuję nad aplikacją z nową bazą Firebase z Google. Mam problem z aktualizowaniem adresu e-mail użytkownika i hasła.Jak zaktualizować adres e-mail i hasło za pomocą nowej bazy Firebase w trybie szybkim

Oto, co próbowałem.

let currentUser = FIRAuth.auth()?.currentUser 

currentUser?.updateEmail(email) { error in 
    if let error = error { 
     print(error) 

    } else { 
     // Email updated. 
     currentUser?.updatePassword(password) { error in 
      if let error = error { 

      } else { 
       // Password updated. 
       print("success") 

      } 
     } 
    } 
} 

Jednak przy aktualizacji hasła pojawia się błąd podobny do tego.

„Domain = kod FIRAuthErrorDomain = 17014 "Operacja ta jest wrażliwa i wymaga uwierzytelniania niedawno ..."

co wiem musimy ponownie skonfigurować użytkownikowi po aktualizacji e-mail.

próbowałem z tym kodem do ponownego cofiguring z Firebase.

let user = FIRAuth.auth()?.currentUser 
var credential: FIRAuthCredential 

// Prompt the user to re-provide their sign-in credentials 

user?.reauthenticateWithCredential(credential) { error in 
    if let error = error { 
    // An error happened. 
    } else { 
    // User re-authenticated. 
    } 
} 

Ale to występuje błąd

Zmienna „poświadczenie” używane przed parafowane

wiem, że to dlatego, że nie zainicjować „poświadczenie” zmiennej, ale nie wiem jak to naprawić do pracy.

Czy jest ktoś, kto zna rozwiązanie?

+0

To działa na mnie po zalogowaniu. Mogę zmienić adres email i hasło tą drogą. – WeiJay

+0

Witam, @ EICaptainv2.0. Zaktualizowałem swoją odpowiedź. Czy mógłbyś sprawdzić i podać mi rozwiązanie? –

Odpowiedz

7

W swojej zmiany, że nie zainicjować FIRAuthCredential ... powinno być var credential = FIRAuthCredential() lub po prostu używać go jak poniżej kod

let credential = FIREmailPasswordAuthProvider.credentialWithEmail(email, password: password) 

user?.reauthenticateWithCredential(credential) { error in 
    if let error = error { 
     // An error happened. 
    } else { 
     // User re-authenticated. 
    } 
} 
+1

Działa idealnie, To jest najlepsza odpowiedź. Dzięki. –