Ir a la consola

Guía de migración del SDK de Admin para Auth

Las versiones siguientes de los SDK de Admin introducen cambios en la compatibilidad con la autenticación:

  • Java SDK 5.0.0
  • Node SDK 5.0.0
  • Python SDK 2.0.0

Sigue las instrucciones que se incluyen en esta guía para migrar el código de autenticación existente a las nuevas versiones.

SDK de Admin Java (5.0.0)

Usa setCredential() en FirebaseOptions.Builder

Se quitó el método obsoleto FirebaseOptions.Builder.setServiceAccount(). Si tu app utiliza este método, actualízala para que use el método setCredential() en su lugar.

Antes

FirebaseOptions options = new FirebaseOptions.Builder()
    .setServiceAccount(getCredentialAsStream())
    .build();

Después

FirebaseOptions options = new FirebaseOptions.Builder()
    .setCredential(FirebaseCredentials.fromCertificate(getCredentialAsStream()))
    .build();

Además, toma en cuenta que ahora es obligatorio llamar a Builder.setCredential() cuando creas un instancia de FirebaseOptions. Si llamas a Builder.build() sin especificar una credencial, el resultado será una excepción de tiempo de ejecución.

Soluciona errores generados por métodos de fábrica en FirebaseCredentials

Los siguientes métodos de fábrica en la clase FirebaseCredentials ahora pueden generar excepciones de E/S:

  • fromCertificate()
  • fromRefreshToken()

Modifica tu código para solucionarlos.

Antes

FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);

Después

try {
    FirebaseCredential credential = FirebaseCredentials.fromCertificate(stream);
} catch (IOException e) {
    // handle error
    log.error("Failed to load Firebase credential", e);
}

Actualiza las implementaciones personalizadas de FirebaseCredential

La interfaz de FirebaseCredential se modificó de la siguiente manera:

Antes

Task<String> getAccessToken(boolean forceRefresh);

Después

Task<GoogleOAuthAccessToken> getAccessToken();

GoogleOAuthAccessToken es un tipo público nuevo que encapsula al token de acceso (String) y su hora de vencimiento (long) y se muestra en un objeto. Los usuarios que proporcionan implementaciones personalizadas de esta interfaz deben implementar el nuevo método.

SDK de Admin Node (5.0.0)

Usa la propiedad credential en admin.app.AppOptions

Se quitó la propiedad obsoleta serviceAccount. Si tu app usa esta propiedad, actualízala para que use la propiedad credential en su lugar.

Antes

admin.initializeApp({
    serviceAccount: 'path/to/key.json'
});

Después

var key = require("path/to/serviceAccountKey.json");
admin.initializeApp({
    credential: admin.credential.cert(key)
});

Ten en cuenta que ahora es obligatorio configurar la propiedad credential cuando inicializas una app. Si llamas a initializeApp sin especificar una credencial, el resultado será una excepción.

Actualiza las referencias a admin.auth.UserMetadata

Las propiedades de la clase UserMetadata cambiaron de la siguiente manera:

  • createdAt ahora es creationTime
  • lastSignedInAt ahora es lastSignInTime

Antes

admin.auth().getUser(uid)
  .then(function(userRecord) {
    var createdAt = userRecord.metadata.createdAt; // Date
    var lastSignedInAt = userRecord.metadata.lastSignedInAt // Date
  })
  .catch(function(error) {
    console.log("Error fetching user data:", error);
  });

Después

admin.auth().getUser(uid)
  .then(function(userRecord) {
    var createdAt = userRecord.metadata.creationTime; // UTC string
    var lastSignedInAt = userRecord.metadata.lastSignInTime // UTC string
  })
  .catch(function(error) {
    console.log("Error fetching user data:", error);
  });

SDK de Admin Python (2.0.0)

La dependencia de oauth2client se reemplazó por google-auth

El SDK de Firebase Admin para Python ya no depende de la biblioteca oauth2client. En su lugar, el SDK ahora utiliza la nueva biblioteca google-auth.

verify_id_token() genera ValueErrors

Si tienes código que maneja de forma explícita los tipos de excepción específicos generados por la función verify_id_token(), actualiza tu código como se indica a continuación:

Antes

try:
  claims = auth.verify_id_token(token)
except oauth2client.crypt.AppIdentityError:
  handle_error()

Después

try:
  claims = auth.verify_id_token(token)
except ValueError:
  handle_error()

Si tu código no detecta excepciones ni captura el tipo base Exception de Python, no es necesario realizar cambios.