Autenticación de la API de Firebase JS: la cuenta existe con una credencial diferente

2 minutos de lectura

avatar de usuario
ajono

Estamos teniendo problemas reales para tratar de resolver esto y, por lo tanto, esperamos alguna ayuda de Firebase/aquellos que hayan resuelto el mismo problema.

La aplicación es React Native (0.43.2) y usa Firebase JS API (último)

Proporcionamos autenticación de Facebook y Google. Funciona bien.

PERO, si un usuario:

  1. inicia sesión con Facebook (está bien)
  2. más tarde, inicia sesión con Google (también está bien)
  3. más tarde, intenta iniciar sesión con Facebook – ¡BOOM! no tan bien y Firebase devuelve este error:

auth/account-exists-with-different-credential

Al leer documentos y algunas publicaciones en SO, pensamos que lo siguiente era correcto, pero claramente no, ya que recibimos el mismo error de autenticación.

...error returned by Firebase auth after trying Facebook login...

const email = error.email;
const pendingCred = error.credential;

firebase.auth().fetchProvidersForEmail(email)
.then(providers => {
   //providers returns this array -> ["google.com"]
   firebase.auth().signInWithCredential(pendingCred)
   .then(result => {
       result.user.link(pendingCred)
   })
   .catch(error => log(error))

La llamada a signInWithCredential arroja el mismo error auth/account-exists-with-different-credential.

¿Alguien puede ayudar a señalar qué estamos haciendo mal con esta implementación? Apreciado enormemente.

  • Posible duplicado de Firebase sobrescribe el inicio de sesión con la cuenta de Google

    – MarksCode

    17 de mayo de 2017 a las 5:09

  • Desafortunadamente, esta solución hace que las ventanas emergentes se bloqueen.

    – Vasilis Blazos

    21 de abril de 2020 a las 16:32

  • Esto solo arroja otro auth/account-exists-with-different-credential error.

    – Lee serio

    13 de abril de 2021 a las 5:09

  • @PrintlnParams Este método funciona. si estas llamando signInWithPopup usando este enfoque y aún obteniendo un error, algo más está fallando en algún lugar de la cadena.

    – I0_ol

    5 de junio de 2021 a las 11:25

  • Desafortunadamente, esta solución hace que las ventanas emergentes se bloqueen.

    – Vasilis Blazos

    21 de abril de 2020 a las 16:32

  • Esto solo arroja otro auth/account-exists-with-different-credential error.

    – Lee serio

    13 de abril de 2021 a las 5:09

  • @PrintlnParams Este método funciona. si estas llamando signInWithPopup usando este enfoque y aún obteniendo un error, algo más está fallando en algún lugar de la cadena.

    – I0_ol

    5 de junio de 2021 a las 11:25

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad