skip to Main Content

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);
};

2

Answers


  1. Chosen as BEST ANSWER

    I found the answer.

    In firebase console:

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

  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search