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

Autentica mediante GitHub con JavaScript

Puedes permitir que tus usuarios se autentiquen con Firebase mediante sus cuentas de GitHub si integras la autenticación de GitHub en tu app. Puedes hacerlo si usas el SDK de Firebase para ejecutar el flujo de acceso o ejecutar el flujo de GitHub OAuth 2.0 de forma manual y pasar el token de acceso y el secreto resultantes a Firebase.

Antes de comenzar

  1. Agrega Firebase a tu proyecto de JavaScript.
  2. En Firebase console, abre la sección Auth.
  3. En la pestaña Método de acceso, habilita el proveedor GitHub.
  4. Agrega el ID de cliente y el secreto del cliente de la consola para desarrolladores de ese proveedor a la configuración del proveedor:
    1. Registra tu app como aplicación de desarrollador en GitHub y obtén el ID de cliente y secreto del cliente de OAuth 2.0.
    2. Asegúrate de que tu URI de redireccionamiento de OAuth de Firebase (p. ej., my-app-12345.firebaseapp.com/__/auth/handler) esté configurado como URL de devolución de llamada de autorización en la página de configuración de tu app en GitHub.
  5. Haz clic en Guardar.

Maneja el flujo de acceso con el SDK de Firebase

Si estás compilando una app web, la manera más fácil de autenticar a tus usuarios en Firebase con sus cuentas de GitHub es administrar el flujo de acceso con el SDK de Firebase JavaScript. Si deseas autenticar a un usuario en Node.js o en cualquier otro entorno que no sea de un navegador, debes manejar el flujo de acceso de forma manual.

Para manejar el flujo de acceso con el SDK de Firebase JavaScript, sigue estos pasos:

  1. Crea una instancia del objeto del proveedor de GitHub:
    var provider = new firebase.auth.GithubAuthProvider();
    
  2. Opcional: Especifica los alcances adicionales de OAuth 2.0 que deseas solicitarle al proveedor de autenticación. Para agregar un alcance, llama a addScope. Por ejemplo:
    provider.addScope('repo');
    
    Consulta la documentación del proveedor de autenticación.
  3. Opcional: Especifica los parámetros personalizados adicionales del proveedor de OAuth que quieres enviar junto con la solicitud de OAuth. Para agregar un parámetro personalizado, llama a setCustomParameters en el proveedor inicializado con un objeto que contenga la clave que se indica en la documentación del proveedor de OAuth y su valor correspondiente. Por ejemplo:
    provider.setCustomParameters({
      'allow_signup': 'false'
    });
    
    No se permiten los parámetros de OAuth necesarios reservados y se ignorarán. Consulta la referencia del proveedor de autenticación para obtener más información.
  4. Autentica con Firebase a través del objeto del proveedor de GitHub. Puedes pedirles a los usuarios que accedan con sus cuentas de GitHub a través de una ventana emergente o mediante un redireccionamiento a la página de acceso. En dispositivos móviles, se prefiere el método de redireccionamiento.
    • Para acceder con una ventana emergente, llama a signInWithPopup:
      firebase.auth().signInWithPopup(provider).then(function(result) {
        // This gives you a GitHub Access Token. You can use it to access the GitHub API.
        var token = result.credential.accessToken;
        // The signed-in user info.
        var user = result.user;
        // ...
      }).catch(function(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;
        // ...
      });
      
      Además, ten en cuenta que puedes recuperar el token de OAuth del proveedor de GitHub, que se puede usar para obtener datos adicionales con las API de GitHub.

      Aquí también puedes detectar y manejar errores. Para obtener una lista de códigos de error, consulta los documentos de referencia de autenticación.

    • Para acceder mediante el redireccionamiento a la página de acceso, llama a signInWithRedirect como se indica a continuación:
      firebase.auth().signInWithRedirect(provider);
      
      Luego, para recuperar el token de OAuth del proveedor de GitHub, puedes llamar a getRedirectResult cuando tu página se cargue:
      firebase.auth().getRedirectResult().then(function(result) {
        if (result.credential) {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          var token = result.credential.accessToken;
          // ...
        }
        // The signed-in user info.
        var user = result.user;
      }).catch(function(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 puedes detectar y manejar errores. Para obtener una lista de códigos de error, consulta los documentos de referencia de autenticación.

Maneja el flujo de acceso de manera manual

También puedes autenticar con Firebase a través de una cuenta de GitHub. Para hacerlo, debes llamar a los extremos de GitHub OAuth 2.0 a fin de manejar el flujo de acceso:

  1. Para integrar la autenticación de GitHub en la app, sigue las indicaciones que se brindan en la documentación para desarrolladores. Al final del flujo de acceso de GitHub, recibirás un token de acceso de OAuth 2.0.
  2. Si necesitas acceder a una aplicación de Node.js, envía el token de acceso de OAuth a la aplicación de Node.js.
  3. Una vez que un usuario acceda correctamente con GitHub, intercambia el token de acceso de OAuth 2.0 por una credencial de Firebase:
    var credential = firebase.auth.GithubAuthProvider.credential(token);
    
  4. Usa la credencial de Firebase para autenticar con Firebase:
    firebase.auth().signInWithCredential(credential).catch(function(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;
      // ...
    });

Autentica con Firebase en una extensión de Chrome

Si compilas una app de extensión de Chrome, debes incluir en la lista blanca el ID de extensión de Chrome:

  1. Abre tu proyecto en Firebase console.
  2. En la sección Aut., abre la página Método de acceso.
  3. Agrega un URI como el siguiente a la lista de dominios autorizados:
    chrome-extension://CHROME_EXTENSION_ID

Solo las operaciones con ventanas emergentes (signInWithPopup y linkWithPopup) están disponibles para las extensiones de Chrome, ya que estas no pueden usar redireccionamientos HTTP. Deberías llamar a estos métodos desde una secuencia de comandos en segundo plano en lugar de una ventana emergente de acción en el navegador, ya que la ventana emergente de autenticación cancela la de acción del navegador.

Asegúrate de incluir la URL https://apis.google.com en la lista blanca content_security_policy del archivo de manifiesto de la extensión de Chrome.

Próximos pasos

Cuando un usuario accede por primera vez, se crea una cuenta de usuario nueva y se la vincula con las credenciales (el nombre de usuario y la contraseña, el número de teléfono o la información del proveedor de autenticación) que el usuario utilizó para acceder. Esta cuenta se almacena como parte de tu proyecto de Firebase y se puede usar para identificar a un usuario en todas las apps del proyecto, sin importar cómo acceda.

  • En tus apps, para conocer el estado de autenticación del usuario, te recomendamos configurar un observador en el objeto Auth. Puedes obtener la información básica de perfil del usuario a partir del objeto User. Consulta Administra usuarios en Firebase.

  • En tus reglas de seguridad de Firebase Realtime Database y Cloud Storage, puedes obtener el ID del usuario único que accedió a partir de la variable auth y usarlo para controlar a qué datos podrá acceder.

Para permitir que los usuarios accedan a la app con varios proveedores de autenticación, puedes vincular las credenciales de estos proveedores con una cuenta de usuario existente.

Para salir de la sesión de un usuario, llama a signOut:

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