M7md-Dev
M7md-Dev

Reputation: 193

Uncaught (in promise) FirebaseError: Firebase: Error (auth/account-exists-with-different-credential)

I'm building an app with react and firebase, this app contain firebase auth.

The user switch between Google/Github Login.

Google login is working fine, but when I login with github it show me this error:

Uncaught (in promise) FirebaseError: Firebase: Error (auth/account-exists-with-different-credential).
    at createErrorInternal (assert.ts:122:1)
    at _createError (assert.ts:83:1)
    at _makeTaggedError (index.ts:261:1)
    at _performFetchWithErrorHandling (index.ts:146:1)
    at async _performSignInRequest (index.ts:191:1)
    at async _signInWithCredential (credential.ts:37:1)
    at async PopupOperation.onAuthEvent (abstract_popup_redirect_operation.ts:102:1)

My Code:

const googleProvider = new GoogleAuthProvider();
const githubProvider = new GithubAuthProvider();

const [{ user }, dispatch] = useStateValue();

const loginWithGoogle = async () => {
  const {
    user: { refreshToken, providerData },
  } = await signInWithPopup(auth, googleProvider);
  dispatch({
    type: actionType.SET_USER,
    user: providerData[0],
  });
  localStorage.setItem("user", JSON.stringify(providerData[0]));
  setIsOpen(false);
};

const loginWithGithub = async () => {
  const {
    user: { refreshToken, providerData },
  } = await signInWithPopup(auth, githubProvider);
  dispatch({
    type: actionType.SET_USER,
    user: providerData[0],
  });
  localStorage.setItem("user", JSON.stringify(providerData[0]));
  setIsOpen(false);
};

Upvotes: 0

Views: 2757

Answers (2)

M7md-Dev
M7md-Dev

Reputation: 193

I found the answer.

In firebase console:

  1. Go to authentication
  2. Go to settings
  3. Choose "Create multiple accounts for each identity provider"

Upvotes: -1

Chris
Chris

Reputation: 961

This is (likely) due to the fact that the two accounts share an email address, so Firebase considers them the same user. See this answer for more info. Docs here.

Upvotes: 3

Related Questions