Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

Firebase項目中的用戶

Firebase 用戶對象代表已在項目中註冊應用程序的用戶帳戶。應用程序通常具有許多註冊用戶,並且項目中的每個應用程序都共享一個用戶數據庫。

用戶實例獨立於Firebase身份驗證實例,因此您可以在同一上下文中具有對不同用戶的多個引用,並且仍然可以調用其任何方法。

用戶屬性

Firebase用戶具有一組固定的基本屬性,即唯一ID,主電子郵件地址,名稱和照片URL,這些屬性存儲在項目的用戶數據庫中,可由用戶( iOSAndroidWeb )更新。您不能將其他屬性直接添加到用戶對象。相反,您可以將其他屬性存儲在任何其他存儲服務中,例如Google Cloud Firestore。

用戶首次註冊您的應用時,將使用可用信息填充用戶的個人資料數據:

  • 如果用戶使用電子郵件地址和密碼註冊,則僅填充主電子郵件地址屬性
  • 如果用戶使用聯合身份提供者(例如Google或Facebook)進行了註冊,則提供者提供的帳戶信息將用於填充用戶的個人資料
  • 如果用戶使用自定義身份驗證系統進行了註冊,則必須將所需的信息顯式添加到用戶的個人資料中

創建用戶帳戶後,您可以重新加載用戶信息,以合併用戶可能在另一台設備上進行的任何更改。

登錄提供商

您可以使用以下幾種方法將用戶登錄到您的應用程序:電子郵件地址和密碼,聯合身份提供者以及您的自定義身份驗證系統。您可以將多個登錄方法與用戶相關聯:例如,用戶可以使用電子郵件地址和密碼或使用Google登錄名登錄同一帳戶。

用戶實例跟踪與用戶鏈接的每個提供程序。這使您可以使用提供商提供的信息來更新空配置文件的屬性。請參閱管理用戶( iOSAndroidWeb )。

當前用戶

當用戶註冊或登錄時,該用戶成為Auth實例的當前用戶。該實例將保持用戶的狀態,因此刷新頁面(在瀏覽器中)或重新啟動應用程序不會丟失用戶的信息。

當用戶註銷時,Auth實例將停止保留對用戶對象的引用,並且不再保持其狀態。目前沒有用戶。但是,用戶實例仍然可以完全起作用:如果您保留對它的引用,則仍然可以訪問和更新用戶數據。

用戶生命週期

推薦的跟踪Auth實例當前狀態的方法是使用偵聽器(在JavaScript中也稱為“觀察者”)。每當Auth對象發生任何相關事件時,Auth偵聽器都會收到通知。請參閱管理用戶( iOSAndroidWeb )。

在以下情況下,Auth偵聽器會收到通知:

  • Auth對象完成初始化,並且用戶已經從上一個會話登錄,或者已從身份提供者的登錄流程重定向
  • 用戶登錄(設置了當前用戶)
  • 用戶註銷(當前用戶為空)
  • 當前用戶的訪問令牌已刷新。在以下情況下可能會發生這種情況:
    • 訪問令牌過期:這是一種常見情況。刷新令牌用於獲取一組新的有效令牌。
    • 用戶更改密碼:Firebase發出新的訪問和刷新令牌,並使舊令牌過期。出於安全原因,這會自動使用戶令牌失效和/或在每台設備上註銷用戶。
    • 用戶重新認證:某些操作要求最近頒髮用戶的憑證;此類操作包括刪除帳戶,設置主電子郵件地址和更改密碼。與其註銷用戶然後再次登錄,不如從用戶那裡獲取新的憑據,然後將新的憑據傳遞給用戶對象的重新認證方法。

驗證令牌

使用Firebase執行身份驗證時,可能會遇到三種身份驗證令牌:

Firebase ID令牌當用戶登錄應用程序時由Firebase創建。這些令牌是經過簽名的JWT,可以安全地標識Firebase項目中的用戶。這些令牌包含用戶的基本配置文件信息,包括用戶的ID字符串,這對於Firebase項目是唯一的。由於可以驗證ID令牌的完整性 ,因此可以將其發送到後端服務器以標識當前登錄的用戶。
身份提供商令牌由聯盟身份提供商(例如Google和Facebook)創建。這些令牌可以具有不同的格式,但通常是OAuth 2.0訪問令牌。應用程序使用這些令牌來驗證用戶是否已成功通過身份提供商進行身份驗證,然後將其轉換為Firebase服務可用的憑據。
Firebase自定義令牌由您的自定義身份驗證系統創建,允許用戶使用您的身份驗證系統登錄應用。定制令牌是使用服務帳戶的私鑰簽名的JWT。應用程序使用這些令牌的方式就像它們使用從聯合身份提供商返回的令牌一樣。