auth:import
指令會將使用者帳戶匯入 Firebase 專案。auth:export
指令會將使用者帳戶匯出為 JSON 和 CSV 檔案。
密碼雜湊參數
如要判斷您專案所使用的密碼雜湊參數,請前往 Firebase 控制台的「Authentication」 >「Users」部分,按一下使用者清單上方的三點圖示。畫面上會顯示一個對話方塊,當中列出可與 auth:import
和 auth: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 | 用來在使用者帳戶檔案中雜湊處理密碼的演算法。 如要匯入含有密碼欄位的帳戶,此為必填屬性。 下列其中一個值: 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 編碼字串的格式。 |
rounds | 用來雜湊處理密碼的捨入數。 對於 SCRYPT 、MD5 、SHA512 、SHA256 、SHA1 、PBKDF_SHA1 和 PBKDF2_SHA256 演算法,此為必填屬性。 |
mem-cost | 這個參數代表 SCRYPT 演算法所需的記憶體費用「或」STANDARD_SCRYPT 演算法所需的 CPU/記憶體費用。 |
平行處理 | 雜湊演算法的平行處理。STANDARD_SCRYPT 演算法的必要欄位。 |
block-size | 雜湊演算法的區塊大小 (通常為 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 檔案。請參閱「檔案格式」。 |
file_format | 選用。要匯出的檔案格式:CSV 或 JSON。 如果 account_file 參數中指定的檔案名稱以 .csv 或 .json 結尾,系統會使用該格式,並忽略這個參數。 |
檔案格式
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