La versión 7.0.0 del SDK de Firebase Admin para Java presenta algunos cambios importantes en la API. Principalmente, los cambios en la API de esta versión son adiciones y mejoras para el manejo de errores de Authentication y FCM.
Cambios en el manejo general de errores
La clase base FirebaseException
ahora expone varios atributos nuevos:
ErrorCode getErrorCode()
: Muestra el código de error de la plataforma asociado con la excepción. Se garantiza que cada instancia deFirebaseException
tendrá un código de error de plataforma no nulo. Los códigos de error posibles de la plataforma se definen como un nuevo tipo de enumeraciónErrorCode
.IncomingHttpResponse getHttpResponse()
: Muestra la respuesta HTTP asociada con la excepción. Puede ser nulo si la excepción se debe a un motivo que no sea una respuesta HTTP de backend.
Al igual que antes, la mayoría de los otros tipos de excepciones definidos en el SDK (por ejemplo, FirebaseAuthException
y FirebaseMessagingException
) derivan de la clase base FirebaseException
.
Cambios en el manejo de errores de Auth
Todas las API de la clase FirebaseAuth
pueden generar instancias de FirebaseAuthException
. Las API asíncronas (por ejemplo, los métodos que muestran un ApiFuture
) pueden fallar con una ExecutionException
que une una FirebaseAuthException
. Los códigos de error específicos de Auth se definen públicamente en el nuevo tipo de enumeración AuthErrorCode
.
Antes (<= v6.15.0)
try {
FirebaseAuth.getInstance().verifyIdToken(idToken, true);
} catch (FirebaseAuthException ex) {
if (ex.getErrorCode().equals("id-token-revoked")) {
System.err.println("ID token has been revoked");
} else {
System.err.println("ID token is invalid");
}
}
Ahora (>= v7.0.0)
try {
FirebaseAuth.getInstance().verifyIdToken(idToken, true);
} catch (FirebaseAuthException ex) {
if (ex.getAuthErrorCode() == AuthErrorCode.REVOKED_ID_TOKEN) {
System.err.println("ID token has been revoked");
} else {
System.err.println("ID token is invalid");
}
}
El AuthErrorCode
se suma al ErrorCode
heredado del tipo FirebaseException
base. Puedes implementar la lógica de manejo de errores que inspecciona ambos códigos de error si es necesario.
Cambios en el manejo de errores de FCM
Todas las API de la clase FirebaseMessaging
pueden generar instancias de FirebaseMessagingException
. Las API asíncronas (por ejemplo, los métodos que muestran un ApiFuture
) pueden fallar con una ExecutionException
que une una FirebaseMessagingException
. Los códigos de error específicos de Authentication se definen públicamente en el nuevo tipo de enumeración MessagingErrorCode
.
Antes (<= v6.15.0)
try {
FirebaseMessaging.getInstance().send(message);
} catch (FirebaseMessagingException ex) {
if (ex.getErrorCode().equals("registration-token-not-registered")) {
System.err.println("Device token has been unregistered");
} else {
System.err.println("Failed to send the notification");
}
}
Ahora (>= v7.0.0)
try {
FirebaseMessaging.getInstance().send(message);
} catch (FirebaseMessagingException ex) {
if (ex.getMessagingErrorCode() == MessagingErrorCode.UNREGISTERED) {
System.err.println("Device token has been unregistered");
} else {
System.err.println("Failed to send the notification");
}
}
El MessagingErrorCode
se suma al ErrorCode
heredado del tipo FirebaseException
base. Puedes implementar la lógica de manejo de errores que inspecciona ambos códigos de error si es necesario.
Reclamaciones personalizadas de Authentication
Se quitó el método obsoleto FirebaseAuth.setCustomClaims()
. En su lugar, usa FirebaseAuth.setCustomUserClaims()
.
Antes (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Ahora (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Constructores de notificaciones de FCM
Se quitaron los constructores obsoletos de la clase Notification
. Usa la clase Notification.Builder
para crear instancias nuevas.
Antes (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Ahora (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();