Google 致力于为黑人社区推动种族平等。查看具体举措

使用 Javascript 使用基于密码的帐户向 Firebase 进行身份验证

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以使用 Firebase 身份验证让您的用户使用他们的电子邮件地址和密码通过 Firebase 进行身份验证,并管理您应用的基于密码的帐户。

在你开始之前

  1. 将 Firebase 添加到您的 JavaScript 项目
  2. 如果您尚未将您的应用程序连接到您的 Firebase 项目,请从Firebase 控制台执行此操作。
  3. 启用电子邮件/密码登录:
    1. Firebase 控制台中,打开Auth部分。
    2. 登录方法选项卡上,启用电子邮件/密码登录方法并单击保存

创建基于密码的帐户

要创建一个带密码的新用户帐户,请在您应用的注册页面中完成以下步骤:

  1. 当新用户使用您应用的注册表单注册时,请完成您的应用所需的所有新帐户验证步骤,例如验证新帐户的密码是否输入正确并满足您的复杂性要求。
  2. 通过将新用户的电子邮件地址和密码传递给createUserWithEmailAndPassword来创建一个新帐户:

    Web version 9

    import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";
    
    const auth = getAuth();
    createUserWithEmailAndPassword(auth, email, password)
      .then((userCredential) => {
        // Signed in 
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ..
      });

    Web version 8

    firebase.auth().createUserWithEmailAndPassword(email, password)
      .then((userCredential) => {
        // Signed in 
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ..
      });
    如果创建了新帐户,用户将自动登录。请查看下面的后续步骤部分以获取已登录用户的详细信息。

    这也是您可以捕获和处理错误的地方。有关错误代码的列表,请查看Auth Reference Docs

使用电子邮件地址和密码登录用户

使用密码登录用户的步骤与创建新帐户的步骤类似。在您应用的登录页面中,执行以下操作:

  1. 当用户登录您的应用程序时,将用户的电子邮件地址和密码传递给signInWithEmailAndPassword

    Web version 9

    import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
    
    const auth = getAuth();
    signInWithEmailAndPassword(auth, email, password)
      .then((userCredential) => {
        // Signed in 
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
      });

    Web version 8

    firebase.auth().signInWithEmailAndPassword(email, password)
      .then((userCredential) => {
        // Signed in
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
      });
    请查看下面的后续步骤部分以获取已登录用户的详细信息。

    这也是您可以捕获和处理错误的地方。有关错误代码的列表,请查看Auth Reference Docs

推荐:启用电子邮件枚举保护

如果电子邮件地址在必须注册时未注册(例如,使用电子邮件地址和密码登录时),或者在必须不使用时注册(例如,更改用户的电子邮件地址时)。虽然这有助于向用户建议具体的补救措施,但它也可能被恶意行为者滥用以发现用户注册的电子邮件地址。

为降低此风险,我们建议您使用 Google Cloud gcloud工具为您的项目启用电子邮件枚举保护。请注意,启用此功能会更改 Firebase 身份验证的错误报告行为:确保您的应用不依赖于更具体的错误。

下一步

用户首次登录后,将创建一个新的用户帐户并将其链接到用户登录所用的凭据,即用户名和密码、电话号码或身份验证提供商信息。这个新帐户存储为您的 Firebase 项目的一部分,可用于在项目中的每个应用程序中识别用户,无论用户如何登录。

  • 在您的应用程序中,了解用户身份验证状态的推荐方法是在Auth对象上设置观察者。然后,您可以从User对象获取用户的基本个人资料信息。请参阅管理用户

  • 在您的 Firebase Realtime Database 和 Cloud Storage Security Rules中,您可以从auth变量中获取登录用户的唯一用户 ID,并使用它来控制用户可以访问的数据。

您可以允许用户使用多个身份验证提供程序登录您的应用程序,方法是将身份验证提供程序凭据链接到现有用户帐户。

要注销用户,请调用signOut

Web version 9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web version 8

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});