삭제시 Swift Firebase 트리거 Cloud 함수
먼저 인증에서 사용자를 삭제 한 후 데이터베이스에서 사용자를 삭제하는 프로젝트 내 에서 on delete 트리거 기능 을 사용하고 싶습니다 .
제공된 링크에는 예제가 있지만 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)
}
}
}
먼저 데이터베이스에서 사용자를 삭제할 수 있고 나중에 인증에서 삭제할 수 있다는 것을 알고 있지만 내 사용 사례에는 적합하지 않습니다. 누구든지 여기서 나를 도울 수 있습니까? 또한 불명확 한 점이 있거나 추가 정보가 필요한 경우 알려주십시오.
답변
여기서 몇 가지 혼란 스러울 수 있습니다.
Cloud Functions는 Node.js로 작성되고 Google 서버에서 실행되므로 Firebase 프로젝트에서 발생하는 이벤트에 응답 할 수 있습니다. 클라이언트 측 Swift 코드에서 삭제되는 사용자 계정과 같은 모든 동일한 이벤트에 응답 할 수는 없습니다. 따라서 Firebase 인증에서 사용자 계정이 삭제되면 Cloud Functions를 사용하여 Cloud Firestore에서 문서를 삭제할 수는 있지만 클라이언트 측 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에서 데이터를 삭제 하고 중포 기지 인증에서 사용자를 삭제 .