Firebase 身份验证

17 Mar 2025 | 5 分钟阅读
Firebase Authentication

在当前时代,用户身份验证是 Android 应用程序最重要的要求之一。 验证用户至关重要,如果我们必须自己编写所有这些代码,则会更加困难。 在 Firebase 的帮助下,这很容易完成。

  • 能够安全地验证我们的用户,它根据他们的兴趣和偏好为他们提供定制的体验。
  • 我们可以确保他们在通过多个设备使用我们的应用程序时,访问其私有数据没有任何问题。
  • Firebase 身份验证提供用于验证用户的所有服务器端内容。 使用 SDK,Firebase 身份验证变得容易。 它使 API 易于使用。
  • Firebase 身份验证还提供了一些用户界面库,当我们在登录时,为我们启用屏幕。
  • Firebase 身份验证支持使用密码、电话号码、流行的身份提供商(如 Google、Facebook 和 Twitter 等)进行身份验证。
  • 我们可以使用 FirebaseUI 将用户登录到我们的应用程序。
    • 它处理使用电子邮件地址和密码、电话号码和流行提供商(包括 Google 登录和 Facebook 登录)登录用户的 UI 流程。
    • 它还可以处理帐户恢复等情况。
    • 不需要设计 UI,因为它已经为我们提供了。 这意味着我们不必编写活动。
  • 我们还可以使用 Firebase 身份验证 SDK 将一种或多种登录方法手动集成到我们的应用程序中。
Firebase Authentication

Firebase UI 身份验证方法

Firebase UI 身份验证是一种将完整的登录系统添加到我们的应用程序的方法,其中 Firebase 为他们提供用户界面。 Firebase UI 提供了一种即插即用的身份验证解决方案,用于在移动设备和网站上实现身份验证。

Firebase UI 可以轻松定制,以适合我们应用程序的其余视觉风格。 它是开源的,因此我们不受限制地修改用户体验以满足我们的应用程序需求。

以下是使用 Firebase UI 身份验证的步骤

  • 设置登录方法
    • 在 firebase 控制台中启用身份验证方法。
      • 对于电子邮件地址和密码、电话号码登录以及任何身份提供商。
    • 如果任何人需要身份提供商,我们必须完成配置。
      • 设置我们的 OAuth 重定向 URL。
  • 自定义登录 UI。
    • 为了自定义登录和 UI,我们必须设置一些 Firebase UI 选项或在 GitHub 上 fork 代码。
  • 要执行登录流程,请使用 Firebase UI
    • 导入 Firebase UI 库。
    • 指定我们想要支持的登录方法。
    • 启动 Firebase UI 登录流程。

Firebase SDK 身份验证方法

这是另一种身份验证方法。 Firebase SDK 身份验证提供了用于创建和管理使用其电子邮件地址和密码登录的用户的方。 SDK 还可以处理发送密码重置电子邮件。

  • 我们还可以使用 SDK 提供电话号码身份验证
    • 通过向他们的手机发送短信来验证用户身份。
  • 我们可以通过与身份提供商集成来验证用户身份。
    • SDK 提供了允许用户使用其 Google、Facebook、Twitter 和 GitHub 帐户登录的方法。
  • 我们可以将应用程序现有的登录系统连接到 Firebase 身份验证 SDK,并获得对 Firebase 实时数据库和其他 Firebase 服务的访问权限。
  • 我们可以创建一个临时的匿名帐户来使用需要身份验证的 Firebase 功能
  • 而无需用户首先登录。

以下是使用 Firebase SDK 身份验证的步骤

  • 设置登录方法
    • 我们必须在 Firebase 控制台中启用电子邮件地址和密码或电话号码登录以及任何身份提供商的身份验证方法。
    • 如果任何人需要身份提供商,我们必须完成配置。
      • 设置我们的 OAuth 重定向 URL。
  • 为我们的登录方法实现 UI 流程
    • 对于电子邮件登录,添加提示用户输入其电子邮件地址的屏幕
    • 对于电话号码登录,添加提示用户输入其电话号码的屏幕,然后从他们收到的 SMS 消息中获取代码。
    • 对于身份登录,实现每个提供商所需流程。
  • 将用户的凭据传递给 Firebase 身份验证 SDK
    • 传递用户的电子邮件地址和密码。
    • 传递从身份提供商获取的 OAuth 令牌。

身份验证如何工作?

  • 我们首先从用户那里获取身份验证凭据,以将用户登录到我们的应用程序中。
    • 凭据可以是用户的电子邮件地址和密码。
    • 凭据可以是来自身份提供商的 OAuth 令牌。
  • 然后,我们将这些凭据传递给 Firebase 身份验证 SDK。 后端服务将验证这些凭据,并将响应返回给客户端。
  • 成功登录后
    • 我们可以访问用户对存储在其他 Firebase 产品中的数据的访问权限。
    • 我们可以访问用户的基本个人资料信息。
    • 我们可以使用提供的身份验证令牌来验证我们自己后端服务中用户的身份。
  • 经过身份验证的用户可以读取和写入 Firebase 实时数据库和云存储中的数据。
    • 我们可以通过修改 Firebase 数据库规则和存储安全规则来控制这些经过身份验证的用户的访问权限。

用户

  • Firebase 用户对象表示已在 Firebase 项目中注册到该应用程序的用户的帐户。 应用程序有许多注册用户,并且 Firebase 项目中的每个应用程序共享一个用户数据库。
  • AFirebase 用户实例独立于 Firebase Auth 实例。 这意味着我们可以在同一上下文中拥有对不同用户的几个引用,并且仍然可以调用其任何方法
  • Firebase 用户具有一组固定的基本属性,例如唯一 ID、主要电子邮件地址、姓名和照片 URL。
  • 首先,用户注册到应用程序。 如果使用电子邮件/密码身份验证,则使用主要电子邮件地址填充用户个人资料数据;如果使用身份身份验证,则使用提供者提供的帐户信息;如果使用自定义身份验证,则使用我们想要的任何内容。
  • 当用户注册或登录时,用户成为 Auth 实例的当前用户。
  • 当用户注销时,Auth 实例停止保留对 User 对象的引用。 并且不再保留其状态
    • 没有当前用户
    • 用户实例继续完全运行
    • 如果我们保留对它的引用,我们仍然可以访问和更新用户的数据。
  • 使用侦听器是跟踪 Auth 实例当前状态的推荐方法。
    • 只要 Auth 对象发生相关事件,Auth 侦听器就会收到通知。

用户生命周期

  • Auth 侦听器会在以下情况下收到通知
  • Auth 对象完成初始化,并且用户已从以前的会话登录或已从身份提供商的登录流程重定向
  • 用户登录。
  • 用户注销。
  • 当前用户的访问令牌已刷新
    • 访问令牌已过期。
    • 用户更改了密码。
    • 用户重新进行身份验证

下一个主题使用 Google 登录