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);
};
CodePudding user response:
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.
CodePudding user response:
I found the answer.
In firebase console:
- Go to authentication
- Go to settings
- Choose "Create multiple accounts for each identity provider"