FirexportGuides

Comment exporter les utilisateurs de Firebase Authentication

L’onglet Utilisateurs (Users) de Firebase Authentication liste tous les comptes de votre projet, mais ne permet pas de les télécharger : son seul menu contient les paramètres de hachage du mot de passe. Il existe trois façons de sortir vos utilisateurs dans un fichier. Celle qui convient dépend de l’usage du fichier : une liste à lire, à partager ou à envoyer par e-mail, ou un transfert vers un autre projet.

Mis à jour le 7 octobre 2026. Firexport, l’extension de la méthode 1, est la nôtre. Les méthodes 2 et 3 n’en ont pas besoin.

La réponse courte

  • Une liste d’utilisateurs pour un tableur, tout de suite: exportez-la depuis l’onglet Utilisateurs (Users) avec une extension de navigateur. Méthode 1
  • Transférer des utilisateurs vers un autre projet, mots de passe compris: firebase auth:export, puis firebase auth:import. Méthode 2
  • Un export planifié, ou des colonnes à votre façon: un court script Admin SDK. Méthode 3
1. Console + extension2. Firebase CLI3. Script Admin SDK
Mise en placeInstaller une extension ChromeNode.js et la Firebase CLINode.js et des identifiants Google Cloud
FormatsCSV avec une ligne d’en-tête, ou JSONCSV sans ligne d’en-tête, ou JSONCSV avec une ligne d’en-tête (ou ce que votre code écrit)
DatesLa date de la console (ISO 8601 avec Advanced)Millisecondes depuis l’epochISO 8601
Revendications personnaliséesAvec AdvancedInclusesIncluses
Hachages de mot de passeJamais lusInclus (rôle Éditeur ou Propriétaire)Exclus

1. Exporter depuis la console Firebase avec Firexport

Dans la console Firebase, Authentication > Utilisateurs (Users) affiche vos utilisateurs dans un tableau, une page à la fois, sans rien pour les télécharger. Firexport est une extension Chrome gratuite qui ajoute un bouton Exporter à ce tableau.

  1. Installez Firexport depuis le Chrome Web Store.
  2. Dans la console Firebase, ouvrez Authentication et l’onglet Utilisateurs (Users).
  3. Cliquez sur Exporter, à droite du bouton Ajouter un utilisateur (Add user). Firexport parcourt toutes les pages du tableau et télécharge un seul fichier CSV. Pour du JSON, ouvrez le menu ⋮ à côté du bouton et choisissez Exporter en JSON.
L’onglet Utilisateurs de Firebase Authentication, avec le bouton Exporter que Firexport ajoute à côté du bouton Ajouter un utilisateur, menu ouvert
Le bouton Exporter se trouve à droite du bouton Ajouter un utilisateur. Son menu propose CSV et JSON.

Ce qui se retrouve dans le fichier :

  • Dans la version gratuite, une ligne par utilisateur avec uid, identifier, disabled, providers, creationTime et lastSignInTime : le tableau tel que la console l’affiche. Les dates sont au format de la console, sans l’heure, et les fournisseurs sont des noms comme Email ou Google.
  • Firexport Advanced, l’offre payante, écrit l’enregistrement complet de chaque utilisateur sous les noms de le SDK Admin : email, emailVerified, displayName, phoneNumber, photoURL, providerData, customClaims, multiFactor, ainsi que les dates de création, de connexion et de jeton en ISO 8601 (UTC).
  • Les noms de colonnes sont en anglais quelle que soit la langue de la console : chaque export a donc les mêmes colonnes.

Les hachages de mot de passe ne sont jamais lus, et les données de vos utilisateurs restent dans votre navigateur : le fichier y est construit, et il ne va nulle part ailleurs que dans vos téléchargements. Aucune clé de compte de service ni CLI à configurer : cela fonctionne dans la session de console où vous êtes déjà connecté. L’extension fonctionne dans Chrome et les autres navigateurs basés sur Chromium.

Un utilisateur à la fois

Pour vérifier un seul utilisateur, survolez sa ligne. Une icône d’information, au début des actions de la ligne, ouvre une fiche avec l’enregistrement complet : nom à afficher, e-mail validé, fournisseurs, dates de connexion et de jeton, revendications personnalisées et seconds facteurs. L’icône de copie de la fiche place l’utilisateur dans le presse-papiers en JSON. Les deux sont gratuites.

La fiche de détails d’un utilisateur à côté du tableau Utilisateurs, avec les fournisseurs, les dates de connexion, les revendications personnalisées et un second facteur
La fiche montre ce que le tableau Utilisateurs laisse de côté.

Exportez vos utilisateurs Firebase depuis la console, sans CLI ni clé de compte de service.

Ajouter à Chrome — gratuit

2. Exporter avec la Firebase CLI

La commande auth:export de la Firebase CLI télécharge tous les comptes d’un projet dans un seul fichier. Elle est faite pour transférer des utilisateurs vers un autre projet avec auth:import, elle inclut donc les hachages de mot de passe et les sels. Cela fait aussi du fichier un identifiant sensible : tenez-le à l’écart des drives partagés et des e-mails. Les champs de hachage et de sel exigent un compte avec le rôle Éditeur ou Propriétaire sur le projet.

npm install -g firebase-tools
firebase login
firebase auth:export users.json --project your-project-id
  • Le nom du fichier détermine le format : users.json ou users.csv.
  • Le CSV n’a pas de ligne d’en-tête. Ses colonnes suivent un ordre fixe : UID, e-mail, e-mail validé, hachage du mot de passe, sel, nom et URL de la photo, quatre colonnes par fournisseur pour Google, Facebook, Twitter et GitHub, puis date de création, date de dernière connexion, numéro de téléphone et quelques autres. La référence auth:export de Google les liste. Les dates sont en millisecondes depuis l’epoch.
  • Le JSON garde les noms propres à l’API : localId, createdAt, lastSignedInAt, providerUserInfo, et customAttributes pour les revendications personnalisées (une chaîne JSON).
  • Seuls les mots de passe hachés avec le scrypt de Firebase sont exportés. Les utilisateurs importés avec un autre algorithme qui ne se sont pas connectés depuis sortent avec des champs de hachage et de sel vides.

Pour transférer les utilisateurs, importez le fichier dans l’autre projet avec les paramètres de hachage de l’ancien projet (Authentication > Utilisateurs (Users) > ⋮ > Paramètres de hachage du mot de passe (Password hash parameters)). Les utilisateurs gardent leurs UID et peuvent se connecter avec le même mot de passe.

firebase auth:import users.json --project new-project-id \
  --hash-algo=SCRYPT --hash-key=BASE64_SIGNER_KEY --salt-separator=BASE64_SALT_SEPARATOR \
  --rounds=ROUNDS --mem-cost=MEM_COST

3. Exporter avec un script Admin SDK

Pour des colonnes à votre façon, ou un export qui s’exécute selon un planning, un court script Node.js avec le SDK Admin Firebase liste tous les utilisateurs et écrit un CSV avec une ligne d’en-tête. Il lui faut un compte qui peut lire les utilisateurs : un Propriétaire ou un Éditeur du projet, ou le rôle Lecteur Firebase Authentication.

  1. Installez le SDK : npm install firebase-admin
  2. Connectez-vous pour obtenir des identifiants locaux : gcloud auth application-default login. Sur un serveur, faites plutôt pointer GOOGLE_APPLICATION_CREDENTIALS vers une clé de compte de service.
  3. Enregistrez le script ci-dessous sous export-users.mjs, remplacez your-project-id et exécutez node export-users.mjs.
// Usage: node export-users.mjs   → writes users.csv
import { writeFileSync } from 'node:fs';
import { initializeApp } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';

initializeApp({ projectId: 'your-project-id' });
const auth = getAuth();

// listUsers returns at most 1,000 users per call, so follow the page token to the end.
const users = [];
let pageToken;
do {
  const page = await auth.listUsers(1000, pageToken);
  users.push(...page.users);
  pageToken = page.pageToken;
} while (pageToken);

// One row per user. Times become ISO 8601. Password hashes are left out: this is a user list, not a backup.
const iso = (time) => (time ? new Date(time).toISOString() : '');
const rows = users.map((user) => ({
  uid: user.uid,
  email: user.email,
  emailVerified: user.emailVerified,
  displayName: user.displayName,
  phoneNumber: user.phoneNumber,
  disabled: user.disabled,
  providers: user.providerData.map((provider) => provider.providerId).join(' '),
  creationTime: iso(user.metadata.creationTime),
  lastSignInTime: iso(user.metadata.lastSignInTime),
  customClaims: user.customClaims ? JSON.stringify(user.customClaims) : '',
}));

// Quote any cell with a comma, a quote or a line break.
function cell(value) {
  const text = value === undefined || value === null ? '' : String(value);
  return /[",\r\n]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
}

const columns = ['uid', 'email', 'emailVerified', 'displayName', 'phoneNumber', 'disabled',
  'providers', 'creationTime', 'lastSignInTime', 'customClaims'];
const lines = [columns, ...rows.map((row) => columns.map((column) => row[column]))];
// The byte order mark at the start makes Excel read names in any language correctly.
writeFileSync('users.csv', '' + lines.map((line) => line.map(cell).join(',')).join('\r\n'));
console.log(`Wrote ${rows.length} users to users.csv`);
  • Si un appel échoue parce que l’API exige un projet de quota (« requires a quota project »), exécutez gcloud auth application-default set-quota-project your-project-id et réessayez.
  • listUsers renvoie les utilisateurs dans l’ordre des UID, pas par date d’inscription. Triez les lignes si vous avez besoin de cet ordre.
  • Le SDK ne renvoie les hachages de mot de passe qu’à un compte qui a l’autorisation firebaseauth.configs.getHashConfig, et le script les laisse de côté dans tous les cas. Pour transférer des utilisateurs avec leurs mots de passe, utilisez la méthode 2.

FAQ

La console Firebase peut-elle exporter les utilisateurs d’Authentication ?

Non. L’onglet Utilisateurs (Users) a un champ de recherche, Ajouter un utilisateur (Add user), un bouton d’actualisation et un menu dont le seul élément est Paramètres de hachage du mot de passe (Password hash parameters). Pour mettre les utilisateurs dans un fichier, il faut la Firebase CLI (firebase auth:export), le SDK Admin, ou une extension de navigateur qui ajoute un bouton Exporter à cet onglet.

Comment obtenir la liste de tous les e-mails des utilisateurs dans Firebase ?

Exportez les utilisateurs et gardez la colonne de l’e-mail. Dans l’export gratuit de Firexport, c’est la colonne identifier, qui affiche ce que montre la console : l’e-mail, ou le numéro de téléphone pour la connexion par téléphone. Dans un script Admin SDK, récupérez user.email depuis listUsers.

L’export inclut-il les mots de passe des utilisateurs ?

Aucune méthode ne donne les mots de passe en clair, car Firebase ne les stocke jamais. firebase auth:export inclut les hachages de mot de passe et les sels, dont firebase auth:import se sert pour transférer des utilisateurs avec des mots de passe qui fonctionnent. Firexport ne lit jamais les hachages, et le SDK Admin ne les renvoie qu’avec une autorisation supplémentaire.

Comment transférer des utilisateurs vers un autre projet Firebase ?

Exécutez firebase auth:export users.json sur l’ancien projet, puis firebase auth:import users.json sur le nouveau avec --hash-algo=SCRYPT et la clé de hachage, le séparateur de sel, le nombre de tours et le coût mémoire indiqués dans les Paramètres de hachage du mot de passe (Password hash parameters) de l’ancien projet. Un fichier sans hachages, issu de Firexport ou d’un script, obligerait chaque utilisateur à mot de passe à réinitialiser son mot de passe.

Puis-je ouvrir l’export dans Excel ou Google Sheets ?

Oui. Toutes les méthodes présentées ici écrivent du CSV, que les deux ouvrent. Le CSV de Firexport et celui du script commencent par une marque d’ordre des octets, donc Excel lit les noms dans toutes les langues. Si les noms s’affichent mal dans un CSV qui n’en a pas, importez-le avec Données > À partir d’un fichier texte/CSV (Data > From Text/CSV) et réglez Origine du fichier (File Origin) sur 65001 : Unicode (UTF-8).