Команда
auth:importимпортирует аккаунты пользователей в проекты Firebase.Команда
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 – модифицированная версия алгоритма хеширования 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. |
| раунды; | Количество раундов, используемых для хеширования паролей. Требуется для алгоритмов SCRYPT, MD5, SHA512,
SHA256, SHA1, PBKDF_SHA1 и
PBKDF2_SHA256. |
| mem-cost | Этот параметр представляет собой стоимость памяти, необходимую для алгоритма SCRYPT, ИЛИ стоимость ЦП/памяти, необходимую для алгоритма STANDARD_SCRYPT.
|
| параллелизация | Параллелизация алгоритма хеширования. Обязательный параметр для алгоритма 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 или JSON.
CSV
CSV-файл с аккаунтами пользователей имеет следующий формат:
| Номер столбца | Описание поля | Тип поля | Комментарии |
|---|---|---|---|
| 1 | Уникальный идентификатор | Строка | Обязательно Этот идентификатор должен быть уникальным для всех аккаунтов в ваших проектах Firebase. Если вы импортируете аккаунт с UID, который уже существует, то аккаунт будет перезаписан. |
| 2 | Электронная почта | Строка | Необязательно |
| 3 | Адрес электронной почты подтвержден | Логическое значение | Необязательно |
| 4 | Хеш пароля | Строка | Необязательный Строка в кодировке Base64. Для этого вызывающий должен иметь роль редактора или владельца. |
| 5 | Соль пароля | Строка | Необязательный Строка в кодировке Base64. Для этого вызывающий должен иметь роль редактора или владельца. |
| 6 | Имя | Строка | Необязательно |
| 7 | URL фотографии | Строка | Необязательно |
| 8 | Идентификатор Google | Строка | Необязательно |
| 9 | Электронная почта Google | Строка | Необязательно |
| 10 | Отображаемое имя Google | Строка | Необязательно |
| 11 | URL фотографии Google | Строка | Необязательно |
| 12 | Идентификатор Facebook | Строка | Необязательно |
| 13 | Адрес электронной почты Facebook | Строка | Необязательно |
| 14 | Отображаемое название на Facebook | Строка | Необязательно |
| 15 | URL фотографии на Facebook | Строка | Необязательно |
| 16 | Идентификатор Twitter | Строка | Необязательно |
| 17 | Электронная почта Twitter | Строка | Необязательно |
| 18 | Отображаемое имя в Твиттере | Строка | Необязательно |
| 19 | URL фотографии в Твиттере | Строка | Необязательно |
| 20 | Идентификатор GitHub | Строка | Необязательно |
| 21 | Адрес электронной почты GitHub | Строка | Необязательно |
| 22 | Отображаемое название GitHub | Строка | Необязательно |
| 23 | URL фотографии на GitHub | Строка | Необязательно |
| 24 | Время создания пользователя | Длинный | Необязательный Unix-время в миллисекундах. |
| 25 | Время последнего входа | Длинный | Необязательный 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.comfacebook.comgithub.comtwitter.com