Ir a la consola

Actualiza tu app web o de Node.js desde Firebase.com

Este documento te guiará en la actualización de tus apps web y Node.js existentes desde Firebase.com a la nueva Firebase console y los SDK 3.x.

El proceso consta de tres pasos:

  1. Importa tu proyecto a la nueva Firebase console.
  2. Actualiza el código de tu base de datos.
  3. Actualiza tu código de autenticación.

Puedes importar tu proyecto en cualquier momento. Tus aplicaciones y los SDK existentes seguirán funcionando. Luego, puedes actualizar tu código cuando estés listo para usar alguna de las funciones nuevas de Firebase en tu aplicación.

Importa tu proyecto a Firebase console

  • Dirígete a Firebase console y selecciona tu proyecto en "Proyectos actuales en Firebase.com".
  • Haz clic en el botón Importar correspondiente al proyecto que deseas actualizar.
    • Si tu proyecto está en un plan pago de firebase.com, deberás configurar la facturación del proyecto en la consola nueva. La información de facturación no se migra automáticamente.
    • Selecciona o crea una cuenta de facturación. Después de importar el proyecto, esta cuenta será responsable de todos sus gastos.
  • Tu contenido de Realtime Database y Hosting se importa automáticamente a Firebase console al instante.
  • Los datos de tus usuarios se migran automáticamente al nuevo backend de autenticación. Esto sucede en segundo plano y los usuarios pueden seguir usando la app mientras se migran los datos. El proceso no afecta los registros ni el acceso de los usuarios. Mientras el sistema migra las cuentas de usuario, verás un ícono giratorio en la pestaña Auth de Firebase console.
  • Si tienes un código promocional activo para una app de Firebase.com, comunícate con nosotros.

Actualización de Firebase CLI

Para usar la interfaz de línea de comando con un proyecto actualizado, deberás instalar la versión 3.0 o una posterior. Para ello, puedes ejecutar el siguiente comando:

npm install -g firebase-tools

Una vez que tengas la última versión de Firebase CLI, deberás volver a realizar la autenticación mediante la ejecución de firebase login. Para obtener un token nuevo para servidores de integración continua o para otros sistemas sin periféricos, ejecuta firebase login:ci.

Por último, tendrás que ejecutar firebase tools:migrate en cada uno de los directorios de los proyectos de Firebase.com migrados.

Actualización de la versión de tu cliente

No tienes que actualizar el código de tus aplicaciones de inmediato. El código de base de datos y de autenticación existente seguirá funcionando con los proyectos actualizados. Pero cuando estés listo para comenzar a usar alguna de las funciones nuevas de Firebase en tu aplicación, sigue estos pasos para migrar el código de base de datos a las API nuevas.

El modo más sencillo de comenzar es cambiar tu secuencia de comandos, esto incluye:

ANTES

<script src="https://cdn.firebase.com/js/client/2.3.2/firebase.js"></script>
DESPUÉS

<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase.js"></script>

Si estás migrando una app de Node.js, puedes descargar la última versión del paquete npm de firebase con los siguientes comandos (para asegurarte de que firebase no está anclado a la versión 2.X, puedes desinstalarla antes de instalar la última versión):

$ npm uninstall firebase --save
$ npm install firebase --save

Obtén una referencia a una base de datos

En las nuevas SDK, ya no se usa new Firebase para crear una instancia de referencia a una base de datos. Lo que se hace es inicializar el SDK mediante firebase.initializeApp():

ANTES

var ref = new Firebase("https://databaseName.firebaseio.com");
DESPUÉS

// See https://firebase.google.com/docs/web/setup for how to
// auto-generate this config
var config = {
  apiKey: "apiKey",
  authDomain: "your-firebase-project-id.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com"
};

firebase.initializeApp(config);

var rootRef = firebase.database().ref();

Para generar esta configuración automáticamente, sigue las instrucciones que se brindan en la página de la configuración web.

Ahora, los métodos de obtención sin argumento son propiedades solo de lectura

Muchos métodos de obtención sin argumentos cambiaron y ahora son propiedades solo de lectura:

ANTES

// Reference
var key = ref.key();
var rootRef = ref.root();
var parentRef = ref.parent();

// Query
var queryRef = query.ref();

// DataSnapshot
ref.on("value", function(snapshot) {
  var dataRef = snapshot.ref();
  var dataKey = snapshot.key();
});
DESPUÉS

// Reference
var key = ref.key;
var rootRef = ref.root;
var parentRef = ref.parent;

// Query
var queryRef = query.ref;

// DataSnapshot
ref.on("value", function(snapshot) {
  var dataRef = snapshot.ref;
  var dataKey = snapshot.key;
});

Actualiza tu código de autenticación

La funcionalidad de Firebase Authentication ahora se aloja detrás de su propio servicio de firebase.auth() y muchos métodos cambiaron de nombre. Por ejemplo, aquí se muestra cómo autenticar un usuario con un proveedor de OAuth:

ANTES

ref.authWithOAuthPopup("twitter", function(error, authData) {
  if (error) {
    // An error occurred
    console.error(error);
  } else {
    // User signed in!
    var uid = authData.uid;
  }
});
DESPUÉS

var auth = firebase.auth();

var provider = new firebase.auth.TwitterAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
  // User signed in!
  var uid = result.user.uid;
}).catch(function(error) {
  // An error occurred
});

Y aquí se muestra cómo acceder con un token personalizado en la API 2.x y en la API nueva:

ANTES

ref.authWithCustomToken(AUTH_TOKEN, function(error, authData) {
  if (error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Login Succeeded!", authData);
  }
});
DESPUÉS

firebase.auth().signInWithCustomToken(AUTH_TOKEN).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

Los tokens personalizados que se generan en el servidor tienen un formato nuevo. Puedes usar los SDK de Firebase Admin para Node.js y Java a fin de crear tokens personalizados compatibles con la nueva API, o bien crearlos mediante una biblioteca de JWT de terceros.

Ten en cuenta que los SDK de administrador de Firebase generan tokens personalizados que caducan al cabo de una hora, a diferencia de las bibliotecas auxiliares de la API 2.x, que, en la configuración predeterminada, generan tokens que caducan tras 24 horas.

Consulta las referencias de la API de Auth para la Web y Node.js a fin de obtener una lista completa de los métodos disponibles.

Obtén el token de acceso

Con la API de autenticación de Firebase.com, puedes usar de manera sencilla el token de acceso del proveedor para llamar a la API del proveedor y obtener información adicional. Este token de acceso aún se encuentra disponible, pero solo inmediatamente después de completar la acción de acceso.

ANTES

ref.onAuth(function(authData) {
  if (authData) {
    var accessToken = authData.providerData[authData.provider].accessToken;
  }
})
DESPUÉS

var auth = firebase.auth();

var provider = new firebase.auth.GoogleAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
  var accessToken = result.credential.accessToken;
});

Dado que Firebase Authentication ya no conserva los tokens de acceso, tu aplicación deberá guardar esa información por sus propios medios, si fuese necesario.

Controla el estado de autenticación

El nombre del método y el argumento del callback para controlar el estado de autenticación variaron un poco, de la siguiente forma:

ANTES

ref.onAuth(function(authData) {
  if (authData) {
    // User signed in!
    var uid = authData.uid;
  } else {
    // User logged out
  }
});
DESPUÉS

var auth = firebase.auth();

auth.onAuthStateChanged(function(user) {
  if (user) {
    // User signed in!
    var uid = user.uid;
  } else {
    // User logged out
  }
});

Migra los accesos existentes

Si hay usuarios que accedieron a tu app con un SDK anterior, necesitarás algo de código para que esas sesiones sigan activas con el SDK nuevo. De lo contrario, los usuarios deberán volver a acceder a sus cuentas. Se proporciona un ejemplo de código abierto para esto en el repositorio de GitHub Asistentes para la migración de Firebase Auth.

Actualización de la nueva plantilla de restablecimiento de contraseñas

Si tu app permite que los usuarios inicien sesión con la autenticación de correo electrónico y contraseña, probablemente también les otorgues a estos usuarios la opción de restablecer su contraseña.

Una vez que hayas actualizado al SDK nuevo, esos correos electrónicos de restablecimiento de contraseña usarán las plantillas nuevas especificadas en Firebase Console. Asegúrate de actualizarlas según las necesidades de tu app.

Actualiza tus bibliotecas de Firebase

Si usas alguna de las siguientes bibliotecas, deberás actualizarla a la versión más reciente.

Biblioteca Versión compatible Recurso
AngularFire 2.x.x GitHub
ReactFire 1.x GitHub
GeoFire 4.1.x GitHub