Зарегистрировать пользователя без изменения currentUser.uid - PullRequest
2 голосов
/ 02 мая 2020

Я создаю приложение, в котором родители создают учетные записи для своих детей, и информация о них привязана к их учетной записи в базе данных в реальном времени. Мои правила базы данных в реальном времени установлены так, что currentUser.uid должен совпадать с uid записи базы данных родителя. Я получаю отказ в доступе при попытке создать дочерний узел в базе данных, потому что Auth.auth().currentUser изменяется на вновь созданного пользователя.

Как я могу создать пользователя без изменения текущего пользователя? 1005 *

func registerUser(with email: String, and password: String, registrationComplete: @escaping (_ status: Bool, _ error: Error?, _ user: User?) -> Void) {
    Auth.auth().createUser(withEmail: email,
                           password: password) { (result, error) in
                            if error != nil {
                                registrationComplete(false, error, nil)
                                return
                            }
                            registrationComplete(true, nil, result?.user)
    }
}

1 Ответ

3 голосов
/ 02 мая 2020

Когда вы вызываете createUser в клиентском коде, это неявно выводит текущего пользователя и регистрирует нового пользователя. Невозможно избежать такого поведения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...