#ios #swift #firebase #google-cloud-firestore #firebase-authentication
#iOS #swift #firebase #google-cloud-firestore #firebase-аутентификация
Вопрос:
Я хотел бы использовать функцию запуска при удалении внутри моего проекта, где я сначала удаляю пользователя из аутентификации, а затем удаляю пользователя из базы данных.
В приведенной ссылке приведен пример, но я не могу заставить его работать в Swift. Допустим, я могу заставить это работать, могу ли я вызвать что-то подобное? Или Auth.auth().currentUser
больше не доступен? И есть ли какое-то обходное решение для этого?
Auth.user.onDelete() {
let db = Firestore.firestore()
let user = Auth.auth().currentUser
db.collection("users").document(user).delete() { err in
if err != nil {
Utilities.showErrorPopUp(labelContent: "Fehler", description: err!.localizedDescription)
finished(false)
} else {
finished(true)
}
}
}
Я знаю, что мог бы сначала удалить пользователя из базы данных, а затем из аутентификации, но это не совсем подходит для моего варианта использования. Кто-нибудь может мне здесь помочь? Кроме того, дайте мне знать, если что-то неясно, и если вам нужна дополнительная информация.
Ответ №1:
Я думаю, здесь вы можете кое-что перепутать.
Облачные функции написаны на Node.js , и запускаются на серверах Google, что позволяет им реагировать на события, происходящие в ваших проектах Firebase. Вы не можете реагировать на все те же события, такие как удаление учетной записи пользователя, в вашем клиентском коде Swift. Таким образом, хотя вполне возможно использовать облачные функции для удаления документа из облачного хранилища Firestore в ответ на удаление учетной записи пользователя при проверке подлинности Firebase, вы не можете этого сделать в своем клиентском коде Swift.
Что вы можете сделать в своем коде Swift, так это удалить учетную запись пользователя, вошедшего в систему в данный момент, и удалить их документ из Firestore. Типичный порядок для этого — сначала удалить документ и только затем удалить учетную запись, поскольку удаление документа, вероятно, / должно требовать, чтобы пользователь все еще существовал и проходил аутентификацию.
Это было бы что-то вроде:
db.collection("cities").document("DC").delete() { err in
if let err = err {
print("Error removing document: (err)")
} else {
print("Document successfully removed!")
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
// An error happened.
} else {
// Account deleted.
}
}
}
}
Приведенный выше код в основном скопирован в соотношении 1: 1 из документа об удалении данных из Firestore и удалении пользователя из аутентификации Firebase.
Комментарии:
1. Определенно запутался там… Хорошо, думаю, тогда мне нужно изменить свой поток. Спасибо за ваше объяснение и помощь!