【发布时间】:2017-03-17 11:42:21
【问题描述】:
我在 firebase auth 中创建了用作管理员的用户。现在我想登录并使用管理员帐户使用他们的 FIRAuth 用户 UID 删除其他帐户。如何快速实现?
【问题讨论】:
标签: swift firebase firebase-authentication
我在 firebase auth 中创建了用作管理员的用户。现在我想登录并使用管理员帐户使用他们的 FIRAuth 用户 UID 删除其他帐户。如何快速实现?
【问题讨论】:
标签: swift firebase firebase-authentication
Firebase 的客户端 SDK 只能删除当前经过身份验证的用户。他们不允许删除任何其他用户,或删除由其 UID 标识的用户。
这意味着您无法实现管理功能,例如在 Swift 中删除任意用户。
相反,您必须使用use the Firebase Admin SDK to delete an arbitrary user 或allow your iOS users to delete their own account。鉴于 Admin SDK 允许其用户执行的操作,它只能在受信任的环境中使用,例如您控制的服务器或 Cloud Functions for Firebase。
【讨论】:
您可以像这样删除/删除用户:
注意:某些安全敏感操作(例如删除帐户、设置主电子邮件地址和更改密码)要求用户最近登录.
let credential: AuthCredential
user.reauthenticate(with:credential) { error in
if let error = error {
// An error happened.
showAlertWithErrorMessage(message: error.localizedDescription)
} else {
// User re-authenticated.
user.delete { error in
if let error = error {
// An error happened.
showAlertWithErrorMessage(message: error.localizedDescription)
} else {
// Account deleted.
Database.database().reference(fromURL: kFirebaseLink).child(kUser).child(userID).removeValue()
try! Auth.auth().signOut()
self.navigationController?.popToRootViewController(animated: true)
}
}
}
}
}else{
showAlertWithErrorMessage(message: "Try again later")
}
这种方式在我的 ios 应用程序中实现删除用户功能。(从双方的 firebase 身份验证和数据库中删除用户)
100% 工作和测试
【讨论】:
AuthCredential 需要先初始化;不熟悉 API 的人如何使用它并不明显。