auth:import e auth:export

  • O comando auth:import importa contas de usuário para projetos do Firebase.

  • O comando auth:export exporta contas de usuário para arquivos JSON e CSV.

Parâmetros de hash da senha

Para determinar os parâmetros de hash de senha usados no seu projeto, navegue até a seção Autenticação > Usuários no console do Firebase e clique no ícone de três pontos acima da lista de usuários. Você verá uma caixa de diálogo com uma lista de parâmetros de hash de senha que podem ser usados com os comandos auth:import e auth:export:

hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <...sensitive...>,
  base64_salt_separator: <...sensitive...>,
  rounds: 8,
  mem_cost: 14,
}

Como esses valores são confidenciais, recomendamos armazená-los com cuidado. A maioria dos projetos do Firebase usa SCRYPT, uma versão modificada do algoritmo de hash scrypt (em inglês), que é o padrão para novos projetos.

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
Parâmetros
account_file O arquivo CSV ou JSON que contém as contas de usuário para importação. Consulte Formato de arquivo.
hash-algo O algoritmo usado para executar o hash de senhas no arquivo de conta de usuário.
Obrigatório ao importar contas com campos de senha. Um dos seguintes valores: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256.
hash-key Chave usada para senhas com hash.
Obrigatório para os algoritmos SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 e HMAC_MD5 Esse argumento deve ser formatado como uma string codificada em base64.
salt-separator Separador de salt que será anexado ao salt na verificação da senha.
Opcional para todos os algoritmos. Esse argumento deve ser formatado como uma string codificada em base64.
rounds O número de rodadas para executar o hash de senhas.
Obrigatório para os algoritmos SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1 e PBKDF2_SHA256.
mem-cost Este parâmetro representa o custo da memória relativo ao algoritmo SCRYPT OU o custo de CPU/memória relativo ao algoritmo STANDARD_SCRYPT.
parallelization O carregamento em paralelo do algoritmo de hash.
Obrigatório para o algoritmo STANDARD_SCRYPT.
block-size O tamanho do bloco (normalmente 8) do algoritmo de hash.
Obrigatório para o algoritmo STANDARD_SCRYPT.
dk-len O comprimento da chave derivada do algoritmo de hash.
Obrigatório para o algoritmo STANDARD_SCRYPT.
hash-input-order A ordem da senha e o sal.
Os valores possíveis são SALT_FIRST e PASSWORD_FIRST. Essa sinalização se aplica a SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 e HMAC_MD5.

auth:export

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Parâmetros
account_file O arquivo CSV ou JSON para onde será feita a exportação. Consulte Formato de arquivo.
file_format Opcional. O formato do arquivo de exportação pode ser csv ou json.
Se o nome do arquivo especificado no parâmetro account_file terminar com .csv ou .json, esse formato será usado e o parâmetro ignorado.

Formato do arquivo

O arquivo da conta de usuário pode ser formatado como CSV ou JSON.

CSV

Um arquivo CSV de conta de usuário tem este formato:

Número da coluna Descrição do campo Tipo de campo Comentários
1 UID String Obrigatório
Esse código deve ser exclusivo entre todas as contas nos projetos do Firebase. Se você importar uma conta com um UID existente, ela será substituída.
2 E-mail String Opcional
3 E-mail confirmado Booleano Opcional
4 Hash da senha String Opcional
Uma string codificada em base64. Esse campo exige que o autor da chamada tenha o papel de Editor ou Proprietário.
5 Salt da senha String Opcional
Uma string codificada em base64. Esse campo exige que o autor da chamada tenha o papel de Editor ou Proprietário.
6 Nome String Opcional
7 URL de foto String Opcional
8 ID do Google String Opcional
9 E-mail do Google String Opcional
10 Nome de exibição no Google String Opcional
11 URL de foto do Google String Opcional
12 ID do Facebook String Opcional
13 E-mail do Facebook String Opcional
14 Nome de exibição no Facebook String Opcional
15 URL de foto do Facebook String Opcional
16 ID do Twitter String Opcional
17 E-mail do Twitter String Opcional
18 Nome de exibição no Twitter String Opcional
19 URL de foto do Twitter String Opcional
20 ID do GitHub String Opcional
21 E-mail do GitHub String Opcional
22 Nome de exibição no GitHub String Opcional
23 URL de foto do GitHub String Opcional
24 Tempo de criação do usuário Longo Opcional
Timestamp Epoch Unix em milissegundos.
25 Último tempo de login Longo Opcional
Timestamp Epoch Unix em milissegundos.
26 Número de telefone String Opcional

Se um valor opcional não for especificado, adicione um campo vazio ao valor. Um campo vazio pode ser qualquer quantidade de caracteres de espaço.

Por exemplo, esta linha representa uma conta de usuário:

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

Um arquivo JSON de conta de usuário tem este formato:

{
  "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
        },
        ...
      ]
    },
    ...
  ]
}

Substitua PROVIDER_ID por um dos seguintes valores:

  • google.com
  • facebook.com
  • github.com
  • twitter.com