auth:import 和 auth:export

  • auth:import 指令會將使用者帳戶匯入 Firebase Google Cloud 的 Resource Manager 工具 經特別設計,能以程式輔助方式協助您管理專案

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

密碼雜湊參數

如要判斷專案所使用的密碼雜湊參數,請前往 驗證 >Firebase 控制台的「使用者」部分,然後按一下 使用者清單上方的三點圖示。畫面上會出現一個含有清單的對話方塊 可搭配 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_SHA1,以及 HMAC_MD5 演算法。 這個引數必須採用 base64 編碼的格式 字串。
鹽分隔符 驗證密碼時,系統會將此分隔符附加到鹽中。
此為所有演算法的選用欄位。這個引數必須採用 base64 編碼字串。
回合 用於雜湊密碼的回合次數。
SCRYPTMD5SHA512SHA256SHA1PBKDF_SHA1PBKDF2_SHA256 演算法。
記憶體費用 這個參數代表 SCRYPT 演算法「或」 STANDARD_SCRYPT 演算法。
平行處理 雜湊演算法平行處理。
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