Jadi tujuan saya adalah agar pengguna diautentikasi ulang dan kemudian dapat memperbarui kata sandi mereka setelahnya. Jadi saat ini saya memiliki pengontrol peringatan yang ditampilkan ketika sebuah sel diketuk, dan dalam peringatan itu adalah ...

1
dante 5 April 2021, 21:03

2 jawaban

Jawaban Terbaik

Anda sedang membuat objek credential sebelum pengguna memiliki kesempatan untuk memasukkan apa pun ke dalam bidang teks:

var reauthEmailTextField = UITextField()
var reauthPasswordTextField = UITextField()
let credential: AuthCredential = EmailAuthProvider.credential(withEmail: reauthEmailTextField.text ?? "", password: reauthPasswordTextField.text ?? "") //<-- Here

Dalam skenario ini, Anda akan selalu mendapatkan "" untuk kedua nilai.

Sebagai gantinya, Anda perlu menangkap nilai-nilai ini di dalam penutupan submit Anda:

let submit = UIAlertAction(title: "Submit", style: .default) { (sub) in

   //get text field values and build `credential` object here
   let credential: AuthCredential = EmailAuthProvider.credential(withEmail: reauthEmailTextField.text ?? "", password: reauthPasswordTextField.text ?? "")

   user.reauthenticate(with: credential) { (result, error) in
                guard error == nil else {
                    print("The user couldn't be reauthenticated. Email: \(reauthEmailTextField.text ?? "") Password:  \(reauthPasswordTextField.text ?? "")")
                    return
                } ...
1
jnpdx 5 April 2021, 18:39

Untuk beberapa alasan, penempatan deklarasi menyebabkan masalah. Saya memutuskan untuk mengubah metode seperti ini:

  user.reauthenticate(with: EmailAuthProvider.credential(withEmail: reauthEmailTextField.text ?? "", password: reauthPasswordTextField.text ?? "")) { (result, error) in
                guard error == nil else {
                    print("The user couldn't be reauthenticated. Email: \(reauthEmailTextField.text ?? "") Password: \(reauthPasswordTextField.text ?? "")")
                    print("\(String(describing: error))")
                    return
                }

Ini mungkin bukan metode terbersih, tetapi jika sepatunya pas, goyangkan. Seluruh proses bekerja dengan baik sekarang.

0
dante 5 April 2021, 18:42