auth:import
命令可将用户账号导入至 Firebase 项目。auth:export
命令可将用户账号导出至 JSON 和 CSV 文件。
密码哈希参数
要确定项目使用的密码哈希参数,请前往 Firebase 控制台的 Authentication > 用户部分,然后点击用户列表上方的三点状图标。您将看到一个对话框,其中列出了可与 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 。 |
hash-key | 用于对密码进行哈希处理的密钥。SCRYPT 、HMAC_SHA512 、HMAC_SHA256 、HMAC_SHA1 和 HMAC_MD5 算法的必需参数。此参数的格式必须是使用 base64 编码的字符串。 |
salt-separator | 验证密码时将会附加到盐值的加盐分隔符。 所有算法的可选参数。此参数的格式必须是使用 base64 编码的字符串。 |
rounds | 用于对密码进行哈希处理的轮数。SCRYPT 、MD5 、SHA512 、SHA256 、SHA1 、PBKDF_SHA1 和 PBKDF2_SHA256 算法的必需参数。 |
mem-cost | 此参数表示 SCRYPT 算法所需的内存消耗,或 STANDARD_SCRYPT 算法所需的 CPU/内存消耗。
|
parallelization | 哈希算法的并行化。STANDARD_SCRYPT 算法的必需参数。 |
block-size | 哈希算法的块大小(通常为 8)。STANDARD_SCRYPT 算法的必需参数。 |
dk-len | 哈希算法的派生密钥长度。STANDARD_SCRYPT 算法的必需参数。 |
hash-input-order | 密码和盐的顺序。 可能的值包括 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 | 字符串 | 必需 此 ID 应在您 Firebase 项目的所有账号中都是唯一的。如果您导入一个 UID 已存在的账号,那么该账号会被覆盖。 |
2 | 电子邮件 | 字符串 | 可选 |
3 | 已验证电子邮件地址 | 布尔值 | 可选 |
4 | 密码哈希 | 字符串 | 可选 使用 base64 编码的字符串。此字段要求调用者具有 Editor 或 Owner 角色。 |
5 | 密码加密盐 | 字符串 | 可选 使用 base64 编码的字符串。此字段要求调用者具有 Editor 或 Owner 角色。 |
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 | 用户创建时间 | 长 | 可选 以毫秒表示的计时原点 Unix 时间戳。 |
25 | 上次登录时间 | 长 | 可选 以毫秒表示的计时原点 Unix 时间戳。 |
26 | 电话号码 | 字符串 | 可选 |
如果您未指定某个可选值,请确保仍为该值添加了空字段。空字段可以是任意数量的空格字符。
例如,下面这行代表一个用户账号:
111, [email protected], false, Jlf7onfLbzqPNFP/1pqhx6fQF/w=, c2FsdC0x, Test User, http://photo.com/123, , , , , 123, [email protected], 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