如何从Firebase身份验证中删除用户帐户
我们正在进行Firebase系列的工作,Firebase提供了各种函数供我们的应用程序使用,如数据库、身份验证、托管等。在本文中,我们将看到如何从Firebase身份验证中删除用户帐户。
Firebase有一个删除函数,可以从Firebase身份验证控制台中删除用户帐户。如果您在Web应用程序中使用Firebase身份验证,那么您也需要根据用户的需求提供用户帐户删除选项。我们可以通过调用Firebase的delete方法来简单地实现这一点。
先决条件: 在开始之前,我们需要为Web应用程序设置Firebase。您可以参考GFG文章“在Web上集成Firebase”来实现Firebase和使用电子邮件和密码进行用户身份验证。
方法:
删除用户: 您可以使用Firebase身份验证的delete方法删除用户帐户。首先,我们将获取当前登录的用户,然后将其删除。
// Current signed-in user to delete
const user = firebase.auth().currentUser;
user.delete().then(() => {
// User deleted.
}).catch((error) => {
// An error occurred
// ...
});
我们将在用户端创建两个按钮。第一个按钮用于用户登录,第二个按钮用于从验证控制台删除用户。
逐步实施: 下面是在Web和Firebase中删除用户的实施。
步骤1: 要为您的Web应用程序添加Firebase,您可以参考此文章。
项目结构: 项目结构将如下所示。
步骤2: 创建完Web应用程序之后,使用以下命令安装firebase模块。
npm install firebase@8.3.1 --save
步骤3: 前往您的 firebase控制台 创建一个新项目并复制您的凭证。
const firebaseConfig = {
apiKey: "your api key",
authDomain: "your credentials",
projectId: "your credentials",
storageBucket: "your credentials",
messagingSenderId: "your credentials",
appId: "your credentials"
};
注意: 这些凭证是机密的。
步骤4:创建HTML文件。
index.html: index文件包含按钮,用于用户登录和删除用户账户,并调用相应的函数执行操作。
为什么需要登录? 如果我们要删除用户账户,那么用户需要重新登录吗?一些安全敏感的操作,比如删除账户、设置主电子邮件地址和更改密码,需要用户最近进行过登录。如果您执行其中一个操作,而用户登录太久时间,操作将失败并显示错误。
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>samplefirebaseforweb</title>
<script src=
"https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
</head>
<body>
<script src="/app.js"></script>
<button onclick="signIn()">signIn</button>
<div>
<button onclick="DeleteUser()">
Delete User Account
</button>
</div>
</body>
</html>
步骤5:创建Javascript文件。
script.js: 脚本文件包含了两个函数signIn和DeleteUser的定义。在DeleteUser中,firebase的delete方法执行从firebase控制台Authentication中永久删除用户账号的操作。
注意: 在删除账号之前,用户必须最近登录,否则会引发错误。
Javascript
const firebaseConfig = {
// Firebase Application configure code
};
// Initialize Firebase
const app = firebase.initializeApp(firebaseConfig);
var email = "ms471841@gmail.com";
var password = "12345678";
function signIn() {
firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then((userCredential) => {
// Signed in
var user = userCredential.user;
console.log("Sign In SuccessFul!");
// ...
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
});
}
function DeleteUser() {
const user = firebase.auth().currentUser;
user
.delete()
.then(() => {
// User deleted.
console.log("User Account Deleted Successful");
})
.catch((error) => {
// An error occurred
// ...
});
}
输出: 输出窗口包含两个浏览器屏幕,左边是实时服务器,右边是Firebase控制台。