Estoy usando firebase auth en mi aplicación y estoy implementando otros proveedores, en este caso, microsoft. El correo electrónico/contraseña funciona bien (la aplicación se inicializa, etc.) pero intenta signInWithPopup , como se muestra a continuación:
import * as firebaseAuth from 'firebase/auth'; export function signupWithMicrosoft(): Promise<firebaseAuth.UserCredential> { const auth = firebaseAuth.getAuth(); const provider = new firebaseAuth.OAuthProvider('microsoft.com'); return firebaseAuth.signInWithPopup(auth, provider).catch(Promise.reject); }falla inconsistentemente con:
Uncaught (in promise) Error: INTERNAL ASSERTION FAILED: Pending promise was never set debugFail assert.ts:256 debugAssert assert.ts:271 reject abstract_popup_redirect_operation.ts:135 onAuthEvent abstract_popup_redirect_operation.ts:104 sendToConsumer auth_event_manager.ts:97 onEvent auth_event_manager.ts:68 onEvent auth_event_manager.ts:65 initAndGetManager popup_redirect.ts:133El error aparece a veces y otras no, pero definitivamente está ahí más que no. He verificado tres veces los URI de redireccionamiento en Azure (originalmente recibía un error de barras diagonales). Una cosa que no he intentado es redirigir el inicio de sesión en lugar del inicio de sesión emergente.
Los intentos de ver lo que sucede dentro de firebase me han llevado a creer que es algún tipo de problema de inicialización, con un AuthEventConsumer que no tiene la promesa de que se resuelve al consumir el evento que se está configurando, sin embargo, estoy atascado tratando de encontrar cómo inicializar eso correctamente. Las solicitudes de autenticación reales se procesan y tienen éxito, pero una vez que intenta resolver esa promesa (que no existe), se queja.
EDITAR: Terminó requiriéndome cambiar a redirigir en lugar de ventana emergente.
Resulta que esto fue una consecuencia de lo auth/popup-closed-by-user que ocurre en Firefox, simplemente mal registrado por mí. La solución fue llamar a la función directamente (sincrónicamente desde una entrada del usuario), no desde una función asíncrona. Disculpas ya que estos factores no se establecieron claramente en la pregunta.