auth:import 和 auth:export

  • auth:import 指令會將使用者帳戶匯入 Firebase 專案。

  • auth:export 指令會將使用者帳戶匯出成 JSON 和 CSV 檔案。

密碼雜湊參數

如要判斷專案使用的密碼雜湊參數,請前往 Firebase 控制台的「Authentication」 >「Users」部分,然後按一下使用者清單上方的三點圖示。系統會顯示對話方塊,列出可搭配 auth:importauth:export 指令使用的密碼雜湊參數:

hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <...sensitive...>,
  base64_salt_separator: <...sensitive...>,
  rounds: 8,
  mem_cost: 14,
}

這些值屬於機密資訊,請謹慎儲存。大多數 Firebase 專案使用 SCRYPT,這是加密雜湊演算法的修改版本,此為新專案的預設選項。

auth:import

firebase auth:import ACCOUNT_FILE    \
    --hash-algo=HASH_ALGORITHM         \
    --hash-key=KEY                     \
    --salt-separator=SALT_SEPARATOR    \
    --rounds=ROUNDS                    \
    --mem-cost=MEM_COST                \
    --parallelization=PARALLELIZATION  \
    --block-size=BLOCK_SIZE            \
    --dk-len=DK_LEN                    \
    --hash-input-order=HASH_INPUT_ORDER
參數
account_file 包含要匯入使用者帳戶的 CSV 或 JSON 檔案。請參閱「檔案格式」一節。
雜湊 Algo 用於在使用者帳戶檔案中雜湊處理密碼的演算法。
必須這麼做才能匯入含有密碼欄位的帳戶。 下列其中一個值:BCRYPTSCRYPTSTANDARD_SCRYPTHMAC_SHA512HMAC_SHA256HMAC_SHA1HMAC_MD5MD5SHA512SHA256SHA1PBKDF_SHA1PBKDF2_SHA256
雜湊鍵 用於雜湊密碼的金鑰。
SCRYPTHMAC_SHA512HMAC_SHA256HMAC_SHA1HMAC_MD5 演算法而言為必要項目。 這個引數必須採用 base64 編碼的字串。
鹽分隔符 驗證密碼時,系統會將此分隔符附加到鹽中。
這項選用適用於所有演算法。這個引數必須採用 base64 編碼字串格式。
回合 用於雜湊密碼的回合次數。
SCRYPTMD5SHA512SHA256SHA1PBKDF_SHA1PBKDF2_SHA256 演算法來說為必要項目。
記憶體費用 這個參數代表 SCRYPT 演算法所需的記憶體成本,「或」STANDARD_SCRYPT 演算法所需的 CPU/記憶體成本。
平行處理 雜湊演算法平行處理。
STANDARD_SCRYPT 演算法而言為必要欄位。
區塊大小 雜湊演算法的區塊大小 (通常是 8 個)。
STANDARD_SCRYPT 演算法而言為必要欄位。
Dk-len 衍生出的雜湊演算法金鑰長度。
STANDARD_SCRYPT 演算法而言為必要欄位。
雜湊輸入順序 密碼和鹽的順序。
可能的值為 SALT_FIRSTPASSWORD_FIRST。此標記適用於 SHA512SHA256SHA1MD5HMAC_SHA512HMAC_SHA256HMAC_SHA1HMAC_MD5

auth:export

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
參數
account_file 要匯出的 CSV 或 JSON 檔案。請參閱「檔案格式」一節。
檔案格式 選用。要匯出的檔案格式:CSV 或 JSON。
如果 account_file 參數中指定的檔案名稱結尾是 .csv.json,系統就會使用該格式,並忽略這個參數。

檔案格式

使用者帳戶檔案的格式可以是 CSVJSON

CSV

CSV 使用者帳戶檔案格式如下:

欄號 欄位說明 欄位類型 註解
1 UID 字串 必填
此 ID 在 Firebase 專案中的所有帳戶均不得重複。如果匯入的帳戶已有 UID,會導致帳戶遭到覆寫。
2 電子郵件地址 字串 選填
3 電子郵件已驗證 布林值 選填
4 密碼雜湊 字串 選用
Base64 編碼字串。呼叫者必須具備「編輯者」或「擁有者」角色,才可使用這個欄位。
5 密碼鹽 字串 選用
Base64 編碼字串。呼叫者必須具備「編輯者」或「擁有者」角色,才可使用這個欄位。
6 名稱 字串 選填
7 相片網址 字串 選填
8 Google ID 字串 選填
9 Google 電子郵件 字串 選填
10 Google 顯示名稱 字串 選填
11 Google 相簿網址 字串 選填
12 Facebook ID 字串 選填
13 Facebook 電子郵件 字串 選填
14 Facebook 顯示名稱 字串 選填
15 Facebook 相片網址 字串 選填
16 Twitter ID 字串 選填
17 Twitter 電子郵件 字串 選填
18 Twitter 顯示名稱 字串 選填
19 Twitter 相片網址 字串 選填
20 GitHub ID 字串 選填
21 GitHub 電子郵件 字串 選填
22 GitHub 顯示名稱 字串 選填
23 GitHub 相片網址 字串 選填
24 使用者建立時間 選用
Epoch Unix 時間戳記,以毫秒為單位。
25 上次登入時間 選用
Epoch Unix 時間戳記,以毫秒為單位。
26 電話號碼 字串 選填

如果您未指定選用值,請確保您仍為該值加入空白欄位。空白欄位可以是任意數量的空格字元。

例如,下列程式碼代表使用者帳戶:

111, test@test.org, false, Jlf7onfLbzqPNFP/1pqhx6fQF/w=, c2FsdC0x, Test User, http://photo.com/123, , , , , 123, test@test.org, Test FB User, http://photo.com/456, , , , , , , , , 1486324027000, 1486324027000

JSON

JSON 使用者帳戶檔案的格式如下:

{
  "users": [
    {
      "localId": UID,
      "email": EMAIL_ADDRESS
      "emailVerified": EMAIL_VERIFIED,
      "passwordHash": BASE64_ENCODED_PASSWORD_HASH,
      "salt": BASE64_ENCODED_PASSWORD_SALT,
      "displayName": NAME,
      "photoUrl": PHOTO_URL,
      "createdAt": CREATED_AT_IN_MILLIS,
      "lastSignedInAt": LAST_SIGNEDIN_AT_IN_MILLIS,
      "phoneNumber": PHONE_NUMBER
      "providerUserInfo": [
        {
          "providerId": PROVIDER_ID,
          "rawId": PROVIDER_UID,
          "email":  PROVIDER_EMAIL,
          "displayName": PROVIDER_NAME,
          "photoUrl": PROVIDER_PHOTO_URL
        },
        ...
      ]
    },
    ...
  ]
}

PROVIDER_ID 替換為下列其中一個值:

  • google.com
  • facebook.com
  • github.com
  • twitter.com