es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al intentar llamar a SignInWithRedirect para iniciar sesión con Google. React Native, Expo, Firebase

He reinstalado firebase, expo y lo he refactorizado para usar la versión 9 sin ningún progreso real. Mi “signInWithEmailAndPassword” funciona bien, pero recibo el mismo error tanto con “popUp” como con “Redirect”.

TypeError: (0, _auth.signInWithRedirect) no es una función. (En '(0, _auth.signInWithRedirect)(auth, provider)', '(0, _auth.signInWithRedirect)' no está definido)

Creo que no se está importando correctamente, pero no veo cómo. He autorizado la autenticación de Google en la consola de Firebase y, como se mencionó, probé las funciones de inicio de sesión estándar y creación de usuarios y ambas no tienen errores. Mi configuración e inicialización funcionan tanto para la autenticación estándar como para las conexiones de Firestore.

Declaraciones de importación:

import {
 getAuth,
 onAuthStateChanged,
 signInWithEmailAndPassword,
 createUserWithEmailAndPassword,
 signInWithRedirect,
 GoogleAuthProvider,
} from "firebase/auth";

Función de inicio de sesión con Google:

const auth = getAuth();

const signInWithGoogle = () => {

const provider = new GoogleAuthProvider();
 signInWithRedirect(auth, provider)
.then((result) => {
 // Esto te da un token de acceso de Google. Puedes usarlo para acceder a la API de Google.
 const credential = GoogleAuthProvider.credentialFromResult(result);
 const token = credential.accessToken;
 // La información del usuario que ha iniciado sesión.
 const user = result.user;
 // ...
})
.catch((error) => {
 // Manejo de errores aquí.
 const errorCode = error.code;
 const errorMessage = error.message;
 // El email de la cuenta del usuario utilizado.
 const email = error.email;
 // El tipo de AuthCredential que se utilizó.
 const credential = GoogleAuthProvider.credentialFromError(error);
 // ...
});
  };

Cualquier orientación sobre lo que me falta es muy apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error proporcionado, parece que la función signInWithRedirect está sin definir.

    Esto podría ser causado potencialmente por una declaración de importación incorrecta. En lugar de importar desde el módulo de autenticación de Firebase, intenta importar directamente desde el SDK de Firebase:

    import { getAuth, onAuthStateChanged, createUserWithEmailAndPassword } from 'firebase/compat/auth';
    import { GoogleAuthProvider } from 'firebase/compat/auth';
    
    // Inicializa la aplicación de Firebase
    const app = initializeApp(firebaseConfig);
    
    // Obtén la instancia de autenticación
    const auth = getAuth(app);
    
    // Maneja la función de inicio de sesión con Google
    const signInWithGoogle = () => {
      const provider = new GoogleAuthProvider();
    
      signInWithRedirect(auth, provider)
        .then((result) => {
          // Esto te da un Token de Acceso de Google. Puedes usarlo para acceder a la API de Google.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          // La información del usuario conectado.
          const user = result.user;
          // ...
        })
        .catch((error) => {
          // Maneja los errores aquí.
          const errorCode = error.code;
          const errorMessage = error.message;
          // El correo electrónico de la cuenta del usuario utilizado.
          const email = error.email;
          // El tipo de AuthCredential que se utilizó.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });
    };
    

    Asegúrate también de estar usando la última versión del SDK de Firebase.

    Si esto no funciona, intenta desinstalar y reinstalar el SDK de Firebase y asegúrate también de haber iniciado sesión en la cuenta de Google correcta en tu navegador.

Comments are closed.