Firebase 项目用户

Firebase 用户对象表示已注册您 Firebase 项目中应用的用户的帐号。应用通常有众多注册用户,同一个 Firebase 项目中的各个应用共享一个用户数据库。

Firebase 用户实例独立于 Firebase 身份验证实例。这意味着,您可以在一个环境中拥有对不同用户的多项引用,还可调用这些引用的任何方法。

用户属性

Firebase 用户具有一组固定的基本属性,即独一无二的 ID、主电子邮件地址、用户名和照片网址。这些属性存储在项目的用户数据库中,并可由用户进行更新(iOSAndroid网页)。您无法向 Firebase 用户对象直接添加其他属性,但可以将更多属性存储在您的 Firebase 实时数据库中。

用户初次注册您的应用时,系统会使用获取的信息来填充该用户的个人资料数据:

  • 如果用户使用电子邮件地址和密码注册,则只填充主电子邮件地址属性
  • 如果用户通过联合身份提供方(如 Google 或 Facebook)注册,则以来自该提供方的帐号信息填充 Firebase 用户个人资料
  • 如果用户使用您的自定义身份验证系统注册,您必须将所需的信息明确添加至 Firebase 用户个人资料

在用户帐号创建后,您可以重新加载该用户的信息,以合并该用户可能在另一台设备上所做的任何更改。

登录提供方

您可以使用几种方法将用户登录到您的 Firebase 应用:电子邮件地址与密码、联合身份提供方和您的自定义身份验证系统。您可以将多种登录方法与一个用户关联:例如,让用户既可以使用电子邮件地址和密码登录帐号,也可以使用“Google 登录”方法登录同一个帐号。

Firebase 用户实例会跟踪与该用户关联的每个提供方,因此您可以使用来自提供方的信息来更新空白的个人资料属性。请参阅“管理用户”(iOSAndroid网页)。

当前用户

用户在注册或登录后,即成为身份验证实例的当前用户。Firebase 身份验证实例会保留该用户的状态,因此刷新页面(在浏览器中)或重启应用不会导致该用户的信息丢失。

当用户注销后,身份验证实例会丢弃对用户对象的引用,不再保留其状态,所以没有当前用户。但用户实例继续完全有效:如果您保持对该实例的引用,则仍可访问和更新该用户的数据。

用户生命周期

要跟踪 Firebase 身份验证实例的当前状态,建议使用侦听器(在 JavaScript 中称为“观察者”)。身份验证对象发生相关情况时,身份验证侦听器都会收到通知。请参阅“管理用户”(iOSAndroid网页)。

身份验证侦听器在以下情况会收到通知:

  • 身份验证对象完成初始化,并且用户已通过之前的会话登录或者是通过身份提供方的登录流程重定向而来
  • 用户登录帐号(已设置当前用户)
  • 用户退出帐号(当前用户变为 null)
  • 当前用户的访问令牌已刷新。以下条件可能发生这种情况:
    • 访问令牌到期:这是常见情况。刷新令牌可用于获取一组有效的新令牌。
    • 用户更改自己的密码:Firebase 会签发新的访问和刷新令牌,并将旧令牌标记为已过期。这意味着,为了确保安全,该用户在每台设备上的令牌都会自动过期,并且(或者)该用户会自动退出帐号。
    • 用户重新进行身份验证:有些操作需要最近颁发的用户凭据,这些操作包括删除帐号、设置主电子邮件地址和修改密码。您不应将用户退出后再登录,而是应向用户索取新凭据并将新凭据传递至用户对象以重新进行身份验证。

身份验证令牌

执行 Firebase 身份验证时,您可能会遇到三种身份验证令牌:

Firebase ID 令牌 当用户登录 Firebase 应用时由 Firebase 创建。这些令牌是已签署的 JWT,可在 Firebase 项目中安全地识别用户。这些令牌包含用户的基本个人资料信息,包括用户的 ID 字符串,此字符串在 Firebase 项目中具有唯一性。由于可以验证 ID 令牌的完整性,您可以将其发送给后端服务器,以识别当前登录的用户。
身份提供方令牌 由联合身份提供方(例如 Google 和 Facebook)创建。这些令牌可能有不同的格式,但常用的是 OAuth 2.0 访问令牌。Firebase 应用使用这些令牌来确认用户已成功通过身份提供方的身份验证,然后将其转换成可供 Firebase 服务使用的凭据。
Firebase 自定义令牌 由自定义身份验证系统创建,用于允许用户使用您的身份验证系统登录 Firebase 应用。自定义令牌是使用服务帐号私钥签署的 JWT。Firebase 应用使用这些令牌的方式与其使用联合身份提供方返回的令牌的方式非常相似。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面