# #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