# Firebase Auth: auth/user-mismatch

> Firebase throws auth/user-mismatch when reauthentication signs in a different account than the current user. Lock the account choice and retry.

Canonical: https://app369.com/fix/firebase-auth-user-mismatch/
Last updated: 2026-11-09

auth/user-mismatch is the Firebase Auth error a reauthentication throws when the credentials belong to a different user than the one signed in. The SDK compares the user ID in the new token with the current user and fails if they differ.

**Short answer**

Reauthenticate with the signed-in user’s own account: build email credentials from currentUser.email, and pass login_hint to the Google popup so the right account is picked. Show a clear message asking for the same account, and retry. If the account was deleted, sign the user out.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **Why the accounts don’t match, and the fix**

1. 01 ### **The user picked another Google account**
  > “The supplied credentials do not correspond to the previously signed in user.” [**Firebase JS SDK, Firebase JS SDK auth errors (user-mismatch)**](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts) The popup shows every Google account in the browser, and the user chose a different one. Pre-select the current one with login_hint and say which account to use.```
import { getAuth, GoogleAuthProvider, reauthenticateWithPopup } from 'firebase/auth';

const auth = getAuth();
const provider = new GoogleAuthProvider();
provider.setCustomParameters({ login_hint: auth.currentUser.email });
await reauthenticateWithPopup(auth.currentUser, provider);
```
2. 02 ### **The reauth form takes a typed email**
  > “When this happens, re-authenticate the user by getting new sign-in credentials from the user and passing the credentials to reauthenticateWithCredential.” [**Firebase, Manage users (re-authenticate a user)**](https://firebase.google.com/docs/auth/web/manage-users) A form that asks for both email and password lets the user type another account. Fill the email from currentUser.email, lock the field, and ask only for the password.```
import { EmailAuthProvider, reauthenticateWithCredential } from 'firebase/auth';

const user = auth.currentUser;
const credential = EmailAuthProvider.credential(user.email, password);
await reauthenticateWithCredential(user, credential);
```
3. 03 ### **The account was deleted** If the user was deleted in the console or by an admin script, the SDK turns the user-not-found result into this same code. Sign the user out and send them to sign-up or sign-in.
4. 04 ### **The sensitive action ran anyway** Also check: the failed reauthentication leaves the old session in place. Run the delete, email change or password change only after reauthentication succeeds.

Checked against the vendor’s docs on November 9, 2026: [Firebase docs: Manage users (re-authenticate a user)](https://firebase.google.com/docs/auth/web/manage-users); [Firebase JS SDK source: auth errors](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts); [Firebase JS SDK source: reauthenticate.ts](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/user/reauthenticate.ts).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Firebase auth/requires-recent-login**](https://app369.com/fix/firebase-auth-requires-recent-login/) · [**Firebase auth/multi-factor-auth-required**](https://app369.com/fix/firebase-auth-multi-factor-auth-required/) · [**Firebase auth/credential-already-in-use**](https://app369.com/fix/firebase-auth-credential-already-in-use/) · [**Firebase user-token-expired**](https://app369.com/fix/firebase-auth-user-token-expired/)

Questions

## **More on this error**

<details>

<summary>**Does auth/user-mismatch sign the user out? **+</summary>

No. The current user stays signed in; only the reauthentication failed.

</details>

<details>

<summary>**Can it happen with Apple sign-in? **+</summary>

Yes. Any provider can return a different account; the SDK compares user IDs, not providers.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)