auth:匯入和 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,這是經過修改的 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 檔案。請參閱「檔案格式」相關說明。
Hash-algo 用來在使用者帳戶檔案中雜湊處理密碼的演算法。
如要匯入含有密碼欄位的帳戶,此為必填屬性。 下列其中一個值:BCRYPTSCRYPTSTANDARD_SCRYPTHMAC_SHA512HMAC_SHA256HMAC_SHA1HMAC_MD5MD5SHA512SHA256SHA1PBKDF_SHA1PBKDF2_SHA256
雜湊鍵 用於雜湊處理密碼的金鑰。
對於 SCRYPTHMAC_SHA512HMAC_SHA256HMAC_SHA1HMAC_MD5 演算法,此為必填屬性。這個引數必須採用 base64 編碼的字串格式。
鹽分隔符 鹽分隔符會在驗證密碼時附加至加鹽。
對所有演算法來說為選填。這個引數必須採用 base64 編碼字串的格式。
rounds 用來雜湊處理密碼的捨入數。
對於 SCRYPTMD5SHA512SHA256SHA1PBKDF_SHA1PBKDF2_SHA256 演算法,此為必填屬性。
mem-cost 這個參數代表 SCRYPT 演算法所需的記憶體費用「或」STANDARD_SCRYPT 演算法所需的 CPU/記憶體費用。
平行處理 雜湊演算法的平行處理。
STANDARD_SCRYPT 演算法的必要欄位。
block-size 雜湊演算法的區塊大小 (通常為 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 檔案。請參閱「檔案格式」。
file_format 選用。要匯出的檔案格式:CSV 或 JSON。
如果 account_file 參數中指定的檔案名稱以 .csv.json 結尾,系統會使用該格式,並忽略這個參數。

檔案格式

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

CSV

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

欄號 欄位說明 欄位類型 註解
1 UID 字串 必填
在 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