Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Autenticarse usando el inicio de sesión de Facebook con JavaScript

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede permitir que sus usuarios se autentiquen con Firebase usando sus cuentas de Facebook integrando el inicio de sesión de Facebook en su aplicación. Puede integrar el inicio de sesión con Facebook utilizando el SDK de Firebase para llevar a cabo el flujo de inicio de sesión o realizando el flujo de inicio de sesión con Facebook manualmente y pasando el token de acceso resultante a Firebase.

Antes de que empieces

  1. Agregue Firebase a su proyecto de JavaScript .
  2. En el sitio de Facebook para desarrolladores , obtenga el ID de la aplicación y un Secreto de la aplicación para su aplicación.
  3. Habilitar el inicio de sesión de Facebook:
    1. En Firebase console , abra la sección Auth .
    2. En la pestaña Método de inicio de sesión, habilite el método de inicio de sesión de Facebook y especifique el ID de la aplicación y el Secreto de la aplicación que obtuvo de Facebook.
    3. Luego, asegúrese de que su URI de redirección de OAuth (p. ej. my-app-12345.firebaseapp.com/__/auth/handler ) aparezca como una de sus URI de redirección de OAuth en la página de configuración de su aplicación de Facebook en el sitio de Facebook para desarrolladores en el Producto . Configuración > Configuración de inicio de sesión de Facebook .

Manejar el flujo de inicio de sesión con el SDK de Firebase

Si está creando una aplicación web, la forma más fácil de autenticar a sus usuarios con Firebase usando sus cuentas de Facebook es manejar el flujo de inicio de sesión con Firebase JavaScript SDK. (Si desea autenticar a un usuario en Node.js u otro entorno sin navegador, debe manejar el flujo de inicio de sesión manualmente).

Para manejar el flujo de inicio de sesión con el SDK de JavaScript de Firebase, sigue estos pasos:

  1. Cree una instancia del objeto de proveedor de Facebook:

    Web version 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const provider = new FacebookAuthProvider();

    Web version 8

    var provider = new firebase.auth.FacebookAuthProvider();
  2. Opcional : especifique ámbitos de OAuth 2.0 adicionales que desee solicitar al proveedor de autenticación. Para agregar un ámbito, llame a addScope . Por ejemplo:

    Web version 9

    provider.addScope('user_birthday');

    Web version 8

    provider.addScope('user_birthday');
    Consulte la documentación del proveedor de autenticación .
  3. Opcional : para localizar el flujo de OAuth del proveedor al idioma preferido del usuario sin pasar explícitamente los parámetros de OAuth personalizados relevantes, actualice el código de idioma en la instancia de Auth antes de iniciar el flujo de OAuth. Por ejemplo:

    Web version 9

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

    Web version 8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. Opcional : especifique parámetros de proveedor de OAuth personalizados adicionales que desee enviar con la solicitud de OAuth. Para agregar un parámetro personalizado, llame a setCustomParameters en el proveedor inicializado con un objeto que contenga la clave como se especifica en la documentación del proveedor de OAuth y el valor correspondiente. Por ejemplo:

    Web version 9

    provider.setCustomParameters({
      'display': 'popup'
    });

    Web version 8

    provider.setCustomParameters({
      'display': 'popup'
    });
    Los parámetros OAuth obligatorios reservados no están permitidos y se ignorarán. Consulte la referencia del proveedor de autenticación para obtener más detalles.
  5. Autenticarse con Firebase usando el objeto del proveedor de Facebook. Puede solicitar a sus usuarios que inicien sesión con sus cuentas de Facebook abriendo una ventana emergente o redirigiéndolos a la página de inicio de sesión. Se prefiere el método de redireccionamiento en dispositivos móviles.
    • Para iniciar sesión con una ventana emergente, llama a signInWithPopup :

      Web version 9

      import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // The signed-in user info.
          const user = result.user;
      
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          const credential = FacebookAuthProvider.credentialFromResult(result);
          const accessToken = credential.accessToken;
      
          // ...
        })
        .catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = FacebookAuthProvider.credentialFromError(error);
      
          // ...
        });

      Web version 8

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // The signed-in user info.
          var user = result.user;
      
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          var accessToken = credential.accessToken;
      
          // ...
        })
        .catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
      
          // ...
        });
      También tenga en cuenta que puede recuperar el token OAuth del proveedor de Facebook, que se puede usar para obtener datos adicionales mediante las API de Facebook.

      Aquí también es donde puede detectar y manejar errores. Para obtener una lista de códigos de error, consulte los Documentos de referencia de autenticación.

    • Para iniciar sesión redirigiendo a la página de inicio de sesión, llame a signInWithRedirect :

      Web version 9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web version 8

      firebase.auth().signInWithRedirect(provider);
      Luego, también puede recuperar el token OAuth del proveedor de Facebook llamando a getRedirectResult cuando se carga su página:

      Web version 9

      import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a Facebook Access Token. You can use it to access the Facebook API.
          const credential = FacebookAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
      
          const user = result.user;
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // AuthCredential type that was used.
          const credential = FacebookAuthProvider.credentialFromError(error);
          // ...
        });

      Web version 8

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a Facebook Access Token. You can use it to access the Facebook API.
            var token = credential.accessToken;
            // ...
          }
          // The signed-in user info.
          var user = result.user;
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      Aquí también es donde puede detectar y manejar errores. Para obtener una lista de códigos de error, consulte los Documentos de referencia de autenticación.

Autenticarse con Firebase en una extensión de Chrome

Si está creando una aplicación de extensión de Chrome, debe agregar su ID de extensión de Chrome:

  1. Abra su proyecto en la consola de Firebase .
  2. En la sección Autenticación , abra la página Método de inicio de sesión .
  3. Agregue un URI como el siguiente a la lista de dominios autorizados:
    chrome-extension://CHROME_EXTENSION_ID

Solo las operaciones emergentes ( signInWithPopup , linkWithPopup y reauthenticateWithPopup ) están disponibles para las extensiones de Chrome, ya que las extensiones de Chrome no pueden usar redireccionamientos HTTP. Debe llamar a estos métodos desde un script de página de fondo en lugar de una ventana emergente de acción del navegador, ya que la ventana emergente de autenticación cancelará la ventana emergente de acción del navegador. Los métodos emergentes solo se pueden usar en extensiones que usan Manifest V2 . El Manifest V3 más nuevo solo permite scripts en segundo plano en forma de trabajadores de servicio, que no pueden realizar las operaciones emergentes en absoluto.

En el archivo de manifiesto de su extensión de Chrome, asegúrese de agregar la URL https://apis.google.com a la lista de permitidos content_security_policy .

Próximos pasos

Después de que un usuario inicia sesión por primera vez, se crea una nueva cuenta de usuario y se vincula a las credenciales (es decir, el nombre de usuario y la contraseña, el número de teléfono o la información del proveedor de autenticación) con las que el usuario inició sesión. Esta nueva cuenta se almacena como parte de su proyecto de Firebase y se puede usar para identificar a un usuario en cada aplicación de su proyecto, independientemente de cómo inicie sesión el usuario.

  • En sus aplicaciones, la forma recomendada de conocer el estado de autenticación de su usuario es establecer un observador en el objeto Auth . A continuación, puede obtener la información básica del perfil del User del objeto Usuario. Consulte Administrar usuarios .

  • En sus Reglas de seguridad de Firebase Realtime Database y Cloud Storage, puede obtener el ID de usuario único del usuario que inició sesión de la variable auth y usarlo para controlar a qué datos puede acceder un usuario.

Puede permitir que los usuarios inicien sesión en su aplicación utilizando varios proveedores de autenticación vinculando las credenciales del proveedor de autenticación a una cuenta de usuario existente.

Para cerrar la sesión de un usuario, llame a signOut :

Web version 9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web version 8

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});