- auth:import指令會將使用者帳戶匯入 Firebase Google Cloud 的 Resource Manager 工具 經特別設計,能以程式輔助方式協助您管理專案
- auth:export指令會將使用者帳戶匯出至 JSON 檔案, CSV 檔案。
密碼雜湊參數
如要判斷專案所使用的密碼雜湊參數,請前往
驗證 >Firebase 控制台的「使用者」部分,然後按一下
使用者清單上方的三點圖示。畫面上會出現一個含有清單的對話方塊
可搭配 auth:import 和 auth: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 | 用於在使用者帳戶檔案中雜湊處理密碼的演算法。 必須授予這項權限,才能匯入含有密碼欄位的帳戶。 值為下列其中之一: BCRYPT、SCRYPT、STANDARD_SCRYPT、HMAC_SHA512、HMAC_SHA256、HMAC_SHA1、HMAC_MD5、MD5、SHA512、SHA256、SHA1、PBKDF_SHA1、PBKDF2_SHA256。 | 
| 雜湊鍵 | 用於雜湊密碼的金鑰。 對 SCRYPT、HMAC_SHA512、HMAC_SHA256、HMAC_SHA1,以及HMAC_MD5演算法。
     這個引數必須採用 base64 編碼的格式
     字串。 | 
| 鹽分隔符 | 驗證密碼時,系統會將此分隔符附加到鹽中。 此為所有演算法的選用欄位。這個引數必須採用 base64 編碼字串。 | 
| 回合 | 用於雜湊密碼的回合次數。 對 SCRYPT、MD5、SHA512、SHA256、SHA1、PBKDF_SHA1和PBKDF2_SHA256演算法。 | 
| 記憶體費用 | 這個參數代表 SCRYPT演算法「或」STANDARD_SCRYPT演算法。 | 
| 平行處理 | 雜湊演算法平行處理。 STANDARD_SCRYPT演算法的必要項目。 | 
| 區塊大小 | 雜湊演算法的區塊大小 (通常是 8 個)。 STANDARD_SCRYPT演算法的必要項目。 | 
| Dk-len | 衍生出的雜湊演算法金鑰長度。 STANDARD_SCRYPT演算法的必要項目。 | 
| 雜湊輸入順序 | 密碼和鹽的順序。 可能的值包括 SALT_FIRST和PASSWORD_FIRST。這個旗標適用於
    傳送至SHA512、SHA256、SHA1、MD5、HMAC_SHA512、HMAC_SHA256、HMAC_SHA1和HMAC_MD5。 | 
auth:export
firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
| 參數 | |
|---|---|
| account_file | 要匯出的 CSV 或 JSON 檔案。請參閱檔案 格式。 | 
| 檔案格式 | 選用。匯出檔案格式:CSV 或 JSON。 如果 account_file參數中指定的檔案名稱結束.csv或.json,系統就會使用該格式,而
      參數都會遭到忽略。 | 
檔案格式
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