Firebase Auth & Realtime Database Apps · Leçon

Association de comptes et gestion des fournisseurs

Permettez à un même utilisateur de posséder un compte unique avec plusieurs méthodes de connexion en associant et dissociant les fournisseurs d’authentification, en gérant les collisions et en administrant les identifiants associés en toute sécurité.

Leçon 4 sur 413 étapes

Association de comptes et gestion des fournisseurs est une leçon Firebase Auth & Realtime Database Apps gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Firebase Auth & Realtime Database Apps, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Firebase Auth & Realtime Database Apps comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

The Multi-Provider Problem

The same person may sign in with email/password today and Google tomorrow. Without linking, Firebase could treat these as two separate accounts.

Account linking unifies multiple sign-in methods under one Firebase user (one uid).

How Linking Works

Linking attaches an additional credential to the currently signed-in user. The user keeps the same uid and data, but gains a new way to log in.

  • Email/password can be linked to a social account
  • Multiple social providers can coexist

Linking a Provider

Use linkWithPopup on the current user to add another provider interactively.

import { getAuth, GoogleAuthProvider, linkWithPopup } from 'firebase/auth';

const user = getAuth().currentUser;
await linkWithPopup(user, new GoogleAuthProvider());
console.log('Google linked to existing account');

Linking a Credential Directly

When you already hold a credential (for example email/password the user just typed), use linkWithCredential.

import { EmailAuthProvider, linkWithCredential } from 'firebase/auth';

const cred = EmailAuthProvider.credential(email, password);
await linkWithCredential(getAuth().currentUser, cred);

The Collision Error

If the new provider's email already belongs to a different account, Firebase throws auth/account-exists-with-different-credential. This is the key case you must handle.

Resolving a Collision

To resolve it: read the conflicting email, ask the user to sign in with the existing provider, then link the new credential onto that account.

import { fetchSignInMethodsForEmail } from 'firebase/auth';

const methods = await fetchSignInMethodsForEmail(auth, email);
// prompt user to sign in with methods[0], then link pendingCred

Inspecting Linked Providers

The user object exposes providerData, an array describing every linked provider. Use it to render a 'connected accounts' settings screen.

const user = getAuth().currentUser;
user.providerData.forEach(p => console.log(p.providerId));

Unlinking a Provider

Let users disconnect a method with unlink, passing the provider ID. Always keep at least one sign-in method so the account stays accessible.

import { unlink } from 'firebase/auth';

await unlink(getAuth().currentUser, 'google.com');

Guarding the Last Provider

Before unlinking, check that more than one provider remains. Removing the only method would orphan the user.

const user = getAuth().currentUser;
if (user.providerData.length <= 1) {
  showError('You must keep at least one sign-in method.');
  return;
}

Reauthentication for Sensitive Changes

Linking or unlinking is a sensitive operation. If the user's session is old, Firebase may require recent login and throw auth/requires-recent-login. Reauthenticate before retrying.

import { reauthenticateWithPopup } from 'firebase/auth';

await reauthenticateWithPopup(user, new GoogleAuthProvider());

Design Considerations

Plan your identity model up front:

  • Treat email as the unifying key when possible
  • Surface linked accounts in user settings
  • Always handle the collision error gracefully

Quick Check

Test your understanding of account linking.

Recap

You can now unify identities across providers.

  • Link with linkWithPopup or linkWithCredential
  • Handle account-exists-with-different-credential
  • Inspect providerData and unlink safely
  • Always keep at least one provider
  • Reauthenticate for sensitive changes
Gratuit pour commencer

Apprends Firebase Auth & Realtime Database Apps avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
11
Leçons
44

Questions Fréquemment Posées

La leçon « Association de comptes et gestion des fournisseurs » est-elle gratuite ?

Oui — le texte complet de « Association de comptes et gestion des fournisseurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Firebase Auth & Realtime Database Apps, passe à CoddyKit PRO. Le cours Firebase Auth & Realtime Database Apps comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Association de comptes et gestion des fournisseurs » ?

Permettez à un même utilisateur de posséder un compte unique avec plusieurs méthodes de connexion en associant et dissociant les fournisseurs d’authentification, en gérant les collisions et en admini… Tu pratiques Firebase Auth & Realtime Database Apps avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Firebase Auth & Realtime Database Apps ?

Aucune expérience préalable n'est requise. Firebase Auth & Realtime Database Apps sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Association de comptes et gestion des fournisseurs » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Firebase Auth & Realtime Database Apps ?

Oui. Chaque leçon Firebase Auth & Realtime Database Apps inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Authentification par numéro de téléphone
  2. Authentification multifacteur (MFA)
  3. Attributs personnalisés et règles de sécurité
  4. Association de comptes et gestion des fournisseurs
← Retour à Firebase Auth & Realtime Database Apps