Estoy creando una aplicación con reacción y base de fuego, esta aplicación contiene autenticación de base de fuego.
El usuario cambia entre el inicio de sesión de Google/Github.
El inicio de sesión de Google funciona bien, pero cuando inicio sesión con github me muestra este 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)
Mi código:
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); };
Esto se debe (probablemente) al hecho de que las dos cuentas comparten una dirección de correo electrónico, por lo que Firebase las considera el mismo usuario. Ver esta respuesta para más información. Documentos aquí .