У меня была такая же проблема! У меня нет входа в Apple, но даже при использовании Firebase эта информация будет равна нулю. Моя проблема заключалась в том, что я неправильно настроил данные для Firebase и XCode для общения. Ваш код кажется правильным, но, похоже, вам не хватает нескольких вещей ..? Вы опытнее меня, поэтому я могу ошибаться! Но вот мой код ...
// SIGN UP FUNCTION, first name, last name, email, password
let db = Database.database().reference()
func signUp(firstName: String, lastName: String, email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
let usersRef = db.child("users")
Auth.auth().createUser(withEmail: email, password: password) {[weak self] (result, error) in
if let uid = result?.user.uid {
let newUser: [String: String] = ["firstName": firstName, "lastName": lastName, "email": email]
let newLocalUser = LocalUser(firstName: firstName, lastName: lastName, email: email)
usersRef.child(uid).setValue(newUser){(error: Error?, ref: DatabaseReference) in
completion(newLocalUser, error)
}
} else {
completion(nil, nil)
}
}
}
// SIGN IN FUNCTION, email, password
func signIn(email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
let usersRef = db.child("users")
Auth.auth().signIn(withEmail: email, password: password) { [weak self]
(result, error) in
guard let user = result?.user else {
completion(nil, error)
return
}
let uid = user.uid
usersRef.child(uid).observeSingleEvent(of: .value) { (snapshot) in
let value = snapshot.value as? [String: Any]
if let user = value {
let userObject = LocalUser.makeObjectFrom(user)
newUser = userObject
completion(userObject, nil)
} else {
completion(nil, error)
}
}
}
}
Я не видел ссылки на db
и uid
, так что это может помочь!