In May 2016, we released the newest version of Google Identity Toolkit as Firebase Authentication, and in April 2019, we released Google Cloud's Identity Platform. These products include upgraded client SDKs, open source UI libraries, session management and integrated email sending service for forgotten password flows.

On June 30, 2020, the SDKs documented on this page and the API setting page will stop functioning. (The https://identitytoolkit.googleapis.com/... and https://securetoken.googleapis.com/... endpoints, used by Identity Platform and Firebase Authentication, will continue to function.)

To migrate an existing project from Identity Toolkit, see the Identity Platform migration guide or Firebase Authentication migration guide.

Migra de Google Identity Toolkit a Firebase Authentication

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

Se lanzó la versión más reciente de Google Identity Toolkit como Firebase Authentication. De ahora en adelante, se detendrá el trabajo sobre las funciones de Identity Toolkit y se desarrollará todo el desarrollo de las funciones nuevas en Firebase Authentication. Recomendamos a los desarrolladores de Identity Toolkit que migren a Firebase Authentication en cuanto sea práctico para sus aplicaciones. Sin embargo, Identity Toolkit seguirá funcionando y dejará de estar disponible sin más anuncios.

Nuevas funciones

Firebase Authentication ya tiene algunas mejoras importantes en las funciones con respecto a Google Identity Toolkit:

  • Acceso a todo Firebase

    Firebase es una plataforma móvil que te ayuda a desarrollar apps de alta calidad, ampliar tu base de usuarios y ganar más dinero rápidamente. Firebase consta de funciones complementarias que puedes combinar según tus necesidades y que incluyen infraestructura para estadísticas para dispositivos móviles, mensajería en la nube, base de datos en tiempo real, almacenamiento de archivos, host estático, configuración remota, pruebas de dispositivos móviles.

  • IU actualizadas

    Rediseñamos por completo los flujos de la IU en función de la investigación de UX más reciente de Google. Esto incluye la recuperación de contraseñas, la vinculación de cuentas y los flujos de desambiguación de cuentas nuevas o existentes que a menudo requieren un tiempo significativo para codificar y depurar. Integra Smart Lock para contraseñas en Android, que mejoró significativamente la conversión de acceso y registro en las apps participantes. También admite modificaciones de temas simples que coincidan con tu aplicación y, para una personalización máxima, las versiones de iOS y Android sean de código abierto.

  • Configuración simplificada del servidor

    Facilitamos el uso de Firebase Authentication para los desarrolladores. Con Identity Toolkit, observamos que muchos desarrolladores eligieron no implementar el flujo de recuperación de correo electrónico, lo que hacía imposible que sus usuarios recuperaran sus cuentas si olvidaban su contraseña. Firebase Authentication puede enviar mensajes de verificación de correo electrónico, restablecimiento de contraseña y cambios de contraseña al usuario, y el texto se puede personalizar fácilmente para tus usuarios. Además, ya no necesitas alojar los widgets de la IU para alojar redireccionamientos y completar operaciones de cambio de contraseña.

  • Nueva Consola del administrador

    Firebase tiene una nueva consola para desarrolladores y la sección Authentication te permite ver, modificar y borrar usuarios. Esto puede ser una gran ayuda para depurar los flujos de acceso y registro. Console también te permite configurar métodos de autenticación y personalizar plantillas de correo electrónico.

  • SDK nuevos

    Todas las API del servidor de Identity Toolkit ahora están disponibles de forma nativa con cada una de nuestras bibliotecas cliente (Android, iOS y la Web). Los desarrolladores podrán acceder y registrar usuarios nuevos y antiguos, ver las propiedades del usuario, vincular, actualizar y borrar cuentas, restablecer contraseñas y mucho más sin estar vinculados a una IU fija. Si lo prefieres, puedes compilar tu propio flujo de acceso y experiencia de forma manual, además de esta API.

  • Administración de sesiones en aplicaciones para dispositivos móviles

    Con Identity Toolkit, las apps crearon su propio estado de sesión en función del evento de autenticación inicial de Identity Toolkit. Firebase Auth usa un servicio de backend que toma un token de actualización, creado a partir del evento de autenticación, y lo intercambia por tokens de acceso de una hora para Android, iOS y JavaScript. Cuando un usuario cambia su contraseña, los tokens de actualización ya no podrán generar nuevos tokens de acceso, lo que inhabilitará el acceso hasta que el usuario vuelva a autenticarse en ese dispositivo.

  • Autenticación anónima y en GitHub

    Firebase Authentication admite dos tipos de autenticación nuevos: GitHub y anónimos. El acceso anónimo se puede usar para crear un ID de usuario único sin que este tenga que realizar ningún proceso de acceso o registro. Con un usuario anónimo, ahora puedes realizar llamadas autenticadas a la API, como lo harías con un usuario normal. Cuando el usuario decide registrarse para obtener una cuenta, toda la actividad se conserva con el mismo ID de usuario. Esto es ideal para situaciones como un carrito de compras del servidor o cualquier aplicación en la que quieras atraer al usuario antes de enviarlo a través de un flujo de registro.

Diferencias entre las funciones

Algunas funciones de Identity Toolkit no están disponibles actualmente en Firebase Authentication, mientras que otras funciones se rediseñaron y funcionan de manera diferente. Puedes elegir no migrar de inmediato si estas funciones son importantes para tu app. En muchos casos, estas funciones pueden no ser importantes para tu app o puede haber resguardos sencillos que te permitirán continuar con la migración.

Diferencias del servidor

El servicio principal de Identity Toolkit con sus API de REST subyacentes, la lógica de validación de la cuenta y la base de datos principal de usuarios se sometió a actualizaciones menores. Sin embargo, se modificaron algunas funciones y la forma en que integras Firebase Authentication en el servicio.

  • Proveedores de identidad

    No se admiten PayPal ni AOL. Los usuarios con cuentas de estos IDP aún pueden acceder a tu aplicación con el flujo de recuperación de contraseña y configurar una contraseña para su cuenta.

  • Bibliotecas de servidor

    Actualmente, hay SDK de Firebase Admin disponibles para Java, Node.js, Python, Go y C#.

  • Correos electrónicos para la administración de cuentas

    Firebase o el propio servidor de correo electrónico del desarrollador pueden realizar el restablecimiento de la contraseña, la verificación del correo electrónico y los mensajes de cambio de correo electrónico. Actualmente, las plantillas de correo electrónico de Firebase solo ofrecen una personalización limitada.

  • Confirmación de cambio de dirección de correo electrónico

    En Identity Toolkit, cuando un usuario decide cambiar su dirección de correo electrónico, envía un correo electrónico a la dirección nueva que tiene un vínculo para continuar con el flujo de cambio de dirección de correo electrónico.

    Para confirmar el cambio de la dirección de correo electrónico, Firebase envía un correo electrónico de revocación a la dirección anterior con un vínculo a fin de revertir el cambio.

  • Lanzamiento de IdP

    Identity Toolkit pudo agregar proveedores de identidad a tu sistema de acceso de forma gradual para que puedas experimentar con el impacto en tus solicitudes de asistencia. Se quitó esta función en Firebase Authentication.

Diferencias del cliente

En Firebase, las funciones que proporciona Google Identity Toolkit se dividen en dos componentes:

  • SDK de Firebase Authentication

    En Firebase Authentication, la funcionalidad que proporciona la API de REST de Identity Toolkit se empaqueta en los SDK cliente disponibles para Android, iOS y JavaScript. Puedes usar el SDK para que los usuarios accedan y registren a los usuarios; accede a la información de perfil del usuario; vincula, actualiza y borra cuentas; y restablece las contraseñas con el SDK cliente en lugar de comunicarte con el servicio de backend a través de llamadas de REST.

  • FirebaseUI Auth

    Todos los flujos de IU que administran el acceso, el registro, la recuperación de contraseña y la vinculación de cuentas se volvieron a compilar con los SDK de autenticación de Frebase. Están disponibles como SDK de código abierto para iOS y Android a fin de permitirte personalizar por completo los flujos de maneras que no son posibles con Identity Toolkit.

Las diferencias adicionales incluyen lo siguiente:

  • Sesiones y migración

    Debido a que las sesiones se administran de manera diferente en Identity Toolkit y Firebase Authentication, tus sesiones existentes finalizarán cuando actualices el SDK y los usuarios deberán volver a acceder.

Antes de comenzar

Antes de migrar de Identity Toolkit a Firebase Authentication, debes hacer lo siguiente:

  1. Abre Firebase console, haz clic en Importar proyecto de Google y selecciona tu proyecto de Identity Toolkit.

  2. Haz clic en > Permissions para abrir la página IAM &Admin.

  3. Abre la Cuentas de servicio. Aquí puedes ver la cuenta de servicio que configuraste antes para Identity Toolkit.

  4. Junto a la cuenta de servicio, haz clic en > Crear clave. Luego, en el diálogo Crear clave privada, configura el tipo de clave en JSON y haz clic en Crear. Se descargará por ti un archivo JSON que contiene las credenciales de tu cuenta de servicio. Necesitarás esto para inicializar el SDK en el siguiente paso.

  5. Regrese a Firebase console. En la sección Auth, abre la página Plantillas de correo electrónico. En esta página, personaliza las plantillas de correo electrónico de tu app.

    En Identity Toolkit, cuando los usuarios restablecen contraseñas, cambian direcciones de correo electrónico y verifican sus direcciones de correo electrónico, necesitas obtener un código OOB del servidor de Identity Toolkit y, luego, enviar el código a los usuarios por correo electrónico. Firebase envía correos electrónicos según las plantillas que configures sin que debas realizar acciones adicionales.

  6. Opcional: Si necesitas acceder a los servicios de Firebase en tu servidor, instala el SDK de Firebase.

    1. Puedes instalar el módulo Node.js de Firebase con npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. En tu código, puedes acceder a Firebase con:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

A continuación, completa los pasos de migración para tu plataforma de aplicaciones: Android, iOS o la Web.

Servidores y JavaScript

Cambios importantes

Hay varias diferencias adicionales en la implementación web de Firebase desde Identity Toolkit.

  • Administración de sesiones web

    Antes, cuando un usuario se autenticó mediante el widget de Identity Toolkit, se configuró una cookie que se usaba para iniciar la sesión. Esta cookie tenía una vida útil de dos semanas y se usó para permitir al usuario usar el widget de administración de cuentas a fin de cambiar la contraseña y la dirección de correo electrónico. Algunos sitios usaron esta cookie para autenticar todas las demás solicitudes de páginas del sitio. Otros sitios usaban la cookie para crear sus propias cookies a través de su sistema de administración de cookies.

    Los SDK cliente de Firebase ahora administran los tokens de ID de Firebase y trabajan con el backend de Firebase Authentication para mantener la sesión actualizada. El backend vence las sesiones cuando se producen cambios importantes en la cuenta (como cambios de contraseña de usuario). Los tokens de ID de Firebase no se configuran automáticamente como cookies en el cliente web y solo tienen una hora de vida. A menos que quieras sesiones de solo una hora, los tokens de ID de Firebase no son apropiados para usarlos como cookies a fin de validar todas las solicitudes de tu página. En su lugar, deberás configurar un objeto de escucha para cuando el usuario acceda, obtener el token de ID de Firebase, validar el token y crear tu propia cookie mediante el sistema de administración de cookies del framework.

    Deberás establecer el ciclo de vida de la sesión de tu cookie según las necesidades de seguridad de tu aplicación.

  • Flujo de acceso web

    Antes, los usuarios se redireccionaban a accountchooser.com cuando se iniciaba el acceso para saber qué identificador quería usar el usuario. El flujo de la IU de Firebase Auth ahora comienza con una lista de métodos de acceso, incluida una opción de correo electrónico que se dirige a accountchooser.com para la Web y usa la API de hintRequest en Android. Además, ya no se requieren direcciones de correo electrónico en la IU de Firebase. Esto facilitará la compatibilidad con usuarios anónimos, usuarios de autenticación personalizada o usuarios de proveedores que no requieren direcciones de correo electrónico.

  • Widget de administración de la cuenta

    Este widget proporciona una IU para que los usuarios cambien las direcciones de correo electrónico, cambien la contraseña o desvinculen sus cuentas de los proveedores de identidad. Actualmente, está en desarrollo.

  • Widget/botón de acceso

    Ya no se proporcionan widgets como el botón de acceso y la tarjeta de usuario. Se pueden compilar fácilmente con la API de Firebase Authentication.

  • No hay signOutUrl

    Deberás llamar a firebase.auth.signOut() y administrar la devolución de llamada.

  • No hay oobActionUrl

    Firebase ahora se encarga del envío de correo electrónico y se configura en Firebase console.

  • Personalización de CSS

    FirebaseUI usa el estilo de Material Design Lite, que agrega animaciones de Material Design de forma dinámica.

Paso 1: Cambia el código del servidor

  1. Si tu servidor se basa en el token de Identity Toolkit (válido durante dos semanas) para administrar las sesiones de usuario web, debes convertir el servidor a fin de que use su propia cookie de sesión.

    1. Implementa un extremo para validar el token de ID de Firebase y configura la cookie de sesión del usuario. La app cliente envía el token de ID de Firebase a este extremo.
    2. Si la solicitud entrante contiene tu propia cookie de sesión, puedes considerar el usuario autenticado. De lo contrario, trata la solicitud como no autenticada.
    3. Si no quieres que ninguno de tus usuarios pierda sus sesiones activas, debes esperar dos semanas para que venzan todos los tokens de Identity Toolkit o también realizar la validación de tokens dobles para tu aplicación web como se describe a continuación en el paso 3.
  2. A continuación, debido a que los tokens de Firebase son diferentes de los tokens de Identity Toolkit, debes actualizar tu lógica de validación de tokens. Instala el SDK de Firebase Server en tu servidor o, si usas un lenguaje que no es compatible con el SDK de Firebase Server, descarga una biblioteca de validación de tokens JWT para tu entorno y valida el token correctamente.

  3. Cuando realizas las actualizaciones anteriores, es posible que aún tengas rutas de código que se basen en tokens de Identity Toolkit. Si tienes aplicaciones para iOS o Android, los usuarios deberán actualizar a la versión nueva de la app a fin de que las nuevas rutas de acceso funcionen. Si no quieres forzar a los usuarios a que actualicen la app, puedes agregar lógica de validación del servidor adicional que examine el token y determine si necesita usar el SDK de Firebase o el SDK de Identity Toolkit para validar el token. Si solo tienes una aplicación web, todas las solicitudes de autenticación nuevas se transferirán a Firebase y, por lo tanto, solo deberás usar los métodos de verificación de tokens de Firebase.

Consulta la Referencia de la API web de Firebase.

Paso 2: Actualiza tu HTML

  1. Agrega el código de inicialización de Firebase a tu app:

    1. Abre tu proyecto en Firebase console.
    2. En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu app web. Se muestra un fragmento de código que inicializa Firebase.
    3. Copie y pegue el fragmento de inicialización en su página web.
  2. Agrega FirebaseUI Auth a tu app:

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. Quita el SDK de Identity Toolkit de tu app.

  4. Si dependías del token de ID de Identity Toolkit para la administración de sesiones, debes realizar los siguientes cambios en el cliente:

    1. Después de acceder correctamente con Firebase, llama a firebase.auth().currentUser.getToken() para obtener un token de ID de Firebase.

    2. Envía el token de ID de Firebase al servidor de backend, valídalo y emite tu propia cookie de sesión.

      No confíes solo en la cookie de sesión cuando realices operaciones sensibles o envíes solicitudes de edición autenticadas a tu servidor. Deberás proporcionar protección adicional contra la falsificación de solicitudes entre sitios (CSRF).

      Si tu framework no proporciona protección CSRF, una forma de evitar un ataque sería obtener un token de ID de Firebase para el usuario que accedió con getToken() e incluir el token en cada solicitud (la cookie de sesión también se enviará de forma predeterminada). Luego, debes validar ese token con el SDK del servidor de Firebase y la verificación de cookies de la sesión que completó el framework de backend. Esto dificultará que los ataques del CSRF tengan éxito, ya que el token de ID de Firebase solo se almacena mediante el almacenamiento web y nunca en una cookie.

    3. Los tokens de Identity Toolkit son válidos durante dos semanas. Es posible que quieras seguir emitiendo tokens que duren dos semanas o que quieras prolongarlo o acortarlo en función de los requisitos de seguridad de tu app. Cuando un usuario salga, borra la cookie de sesión.

Paso 3: Actualiza las URL de redireccionamiento del IdP

  1. En Firebase console, abre la sección Authentication y haz clic en la pestaña Método de acceso.

  2. Para cada proveedor de acceso federado que admitas, haz lo siguiente:

    1. Haz clic en el nombre del proveedor de acceso.
    2. Copia el URI de redireccionamiento de OAuth.
    3. En la consola para desarrolladores del proveedor de acceso, actualiza el URI de redireccionamiento de OAuth.

Android

Paso 1: Agrega Firebase a tu app

  1. Abre Firebase console y selecciona el proyecto de Identity Toolkit que ya importaste.

  2. En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu app para Android. En el diálogo Agregar Firebase, proporciona el nombre del paquete de tu app y la huella digital del certificado de firma, y haz clic en Agregar app. El archivo de configuración google-services.json se descargará en tu computadora.

  3. Copia el archivo de configuración en el directorio raíz del módulo de tu app para Android. Este archivo de configuración contiene información del proyecto y el cliente de Google OAuth.

  4. En el archivo build.gradle a nivel de proyecto (<var>your-project</var>/build.gradle), especifica el nombre del paquete de tu app en la sección defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. También en tu archivo build.gradle de nivel de proyecto, agrega una dependencia para incluir el complemento de google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. En el archivo build.gradle de nivel de app (<var>my-project</var>/<var>app-module</var>/build.gradle) de tu app, agrega la siguiente línea en la parte inferior para habilitar el complemento de google-services:

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    El complemento google-services usa el archivo google-services.json a fin de configurar tu aplicación para usar Firebase.

  7. Además, en el archivo build.gradle de nivel de app, agrega la dependencia de Firebase Authentication:

    compile 'com.google.firebase:firebase-auth:21.1.0'
    compile 'com.google.android.gms:play-services-auth:20.4.0'
    

Paso 2: Quita el SDK de Identity Toolkit

  1. Quita la configuración de Identity Toolkit del archivo AndroidManifest.xml. Esta información se incluye en el archivo google-service.json y se carga mediante el complemento google-services.
  2. Quita el SDK de Identity Toolkit de tu app.

Paso 3: Agrega FirebaseUI a tu app

  1. Agrega FirebaseUI Auth a tu app.

  2. En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.

iOS

Paso 1: Agrega Firebase a tu app

  1. Agrega el SDK de Firebase a tu app ejecutando los siguientes comandos:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abre Firebase console y selecciona el proyecto de Identity Toolkit que ya importaste.

  3. En la página Descripción general, haz clic en Agregar app y, luego, en Agregar Firebase a tu app para iOS. En el cuadro de diálogo Agregar Firebase, proporciona tu ID de paquete y el ID de App Store de tu app y, luego, haz clic en Agregar app. El archivo de configuración GoogleService-Info.plist se descargará en tu computadora. Si tienes varios ID de paquete en tu proyecto, cada uno debe conectarse en Firebase console para que pueda tener su propio archivo GoogleService-Info.plist.

  4. Copia el archivo de configuración en la raíz de tu proyecto de Xcode y agrégalo a todos los destinos.

Paso 2: Quita el SDK de Identity Toolkit

  1. Quita GoogleIdentityToolkit del Podfile de tu app.
  2. Ejecuta el comando pod install.

Paso 3: Agrega FirebaseUI a tu app

  1. Agrega FirebaseUI Auth a tu app.

  2. En tu app, reemplaza las llamadas al SDK de Identity Toolkit por llamadas a FirebaseUI.