📜  Firebase身份验证

📅  最后修改于: 2021-01-02 03:26:00             🧑  作者: Mango

Firebase身份验证

在当今时代,用户身份验证是Android应用程序最重要的要求之一。对用户进行身份验证非常重要,如果我们必须自己编写所有这些代码,则要困难得多。在Firebase的帮助下,这很容易完成。

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

Firebase UI身份验证方法

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

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

有以下步骤可使用Firebase UI身份验证:

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

Firebase SDK身份验证方法

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

  • 我们还可以使用SDK提供电话号码身份验证
    • 通过将SMS消息发送到他们的电话来对用户进行身份验证。
  • 我们可以通过与身份提供商集成来对用户进行身份验证。
    • 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实时数据库和Cloud Storage。
    • 我们可以通过修改Firebase数据库规则和存储安全规则来控制那些经过身份验证的用户的访问。

用户数

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

用户生命周期

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