Firebase Auth не печатает пользователя, вошедшего в систему, хотя пользователь там есть

# #ios #swift #firebase #google-cloud-firestore #firebase-authentication

Вопрос:

Я создал идентификатор аутентификации Firebase и адрес электронной почты (которые были созданы «Добавить пользователя», как показано на рисунке ниже»-

введите описание изображения здесь

Я пытаюсь перенести этот идентификатор в Firestore с помощью кода ниже:-

  import UIKit
 import Firebase
 import FirebaseFirestoreSwift

 class UserIdtoFirestoreViewController: UIViewController {
     let db = Firestore.firestore()
     var ref: DocumentReference? = nil
     let user = Auth.auth().currentUser
    
     @IBAction func GetUserId(_ sender: UIButton) { 
         print("button pressed")
         Auth.auth().addStateDidChangeListener { auth, user in       
             if user != nil {
                 print("current user is  (user)")
                 let email = user!.email
                 let uid = user!.uid
                 let db = Firestore.firestore()
         
                 db.collection("users")
                   .document(uid)
                   .setData([
                     "email":email,"uid":uid
                   ])

        } else { 
            print("no user is signed in")}
        }
    }
}
 

Но он печатает —

нажата кнопка

ни один пользователь не вошел в систему

Кроме того, база данных Firestore пуста, как вы можете видеть:-

введите описание изображения здесь

Как перенести данные аутентификации с аутентификации в Firestore?

Комментарии:

1. С помощью своего кода вы только добавляете прослушиватель событий, но никогда не вызываете механизм аутентификации. Вы называете это в другом месте? (для ясности: я не вижу никакого кода, который отправляет имя пользователя и пароль в firebase auth). Кроме того, вы добавляете прослушиватель каждый раз при нажатии кнопки, и это не очень хорошо, потому что это приведет к многократному выполнению одного и того же прослушивателя при каждом повторном нажатии кнопки

2. Вы нашли решение?

Ответ №1:

Вы должны войти в существующего пользователя, а затем вы увидите информацию о пользователях в прослушивателе состояния аутентификации.
Это пример поющего пользователя с аутентификацией по электронной почте/паролю

 Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in  
  guard let strongSelf = self else { return }
  // ...
}
 

Ссылка: https://firebase.google.com/docs/auth/ios/start#sign_in_existing_users