[英]How to delete authenticated user from firebase in angular
當單擊一個按鈕時,我調用了 function,
onDelete(id:string){ this.db.collection('Students').doc(id).delete(); }
這里,id 是我要刪除的文檔的名稱,db 是 AngularFireStore 類型的屬性,'Students' 是集合的名稱。
文檔結構:在此處輸入圖片描述在上圖中,集合名稱為Students,在該集合名稱下存在多個文檔,因為文檔名稱必須是唯一的,所以我給該名稱指定了一個數字類型的字符串作為id。 在每個文檔中,都有 email 字段,當我刪除同一個文檔時,我想從身份驗證中刪除 email。
注冊用戶的代碼:
this.afAuth.auth.createUserWithEmailAndPassword(email:string,password:string).then(res=>{})
如果要刪除 Firebase 身份驗證中存在的用戶,您有兩種可能性:
您調用delete()
方法,如下所示:
const user = firebase.auth().currentUser;
user.delete()
.then(() => {
//....
})
.catch(err => {
if (err.code === "auth/requires-recent-login") {
//Re-authenticate the user
} else {
//....
}
})
但是請注意,此方法“要求用戶最近登錄。如果不滿足此要求,請要求用戶再次進行身份驗證,然后調用firebase.User.reauthenticateWithCredential
”。 auth/requires-recent-login
代碼的錯誤是“如果用戶的最后一次登錄時間未達到安全閾值,則拋出”。
因此,只有登錄用戶才能從前端調用此方法,以刪除他/她自己的帳戶。
您可以使用 Admin SDK 的deleteUser()
方法,例如在 Cloud Function 中。
在這種情況下,不需要讓用戶登錄,因為這是在后端執行的,因此可以刪除任何用戶。
例如,您可能有一個由管理員用戶觸發的Callable Cloud Function 。
另一種可能性是在 Firestore 用戶的文檔刪除時觸發 Cloud Function。
我了解到您想在刪除時刪除 Auth 服務中的用戶記錄。 為此,您可以編寫Cloud Function ,如下所示:
exports.deleteUser = functions.firestore
.document('Students/{studentID}')
.onDelete((snap, context) => {
const deletedValue = snap.data();
const userEmail = deletedValue.Email;
return admin.auth().getUserByEmail(userEmail)
.then(userRecord => {
const userID = userRecord.uid;
return admin.auth().deleteUser(userID)
})
.catch(error => {
console.log(error.message);
return null;
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.