La version 7.0.0 du SDK Admin Firebase pour Java apporte des modifications importantes à l'API. Principalement, les modifications apportées à l'API dans cette version sont des ajouts et des améliorations dans la gestion des exceptions pour Authentication et FCM.
Modifications générales apportées à la gestion des erreurs
La classe de base FirebaseException expose désormais plusieurs nouveaux attributs :
ErrorCode getErrorCode(): renvoie le code d'erreur de la plate-forme associé à l'exception. Chaque instance deFirebaseExceptionest garantie d'avoir un code d'erreur de plate-forme non nul. Les codes d'erreur de plate-forme possibles sont définis comme un nouveau type d'énumérationErrorCode.IncomingHttpResponse getHttpResponse(): renvoie la réponse HTTP associée à l'exception. Peut être nul si l'exception a été causée par une raison autre qu'une réponse HTTP de backend.
Comme auparavant, la plupart des autres types d'exception définis dans le SDK (par exemple, FirebaseAuthException, FirebaseMessagingException) sont dérivés de la classe de base FirebaseException.
Modifications apportées à la gestion des erreurs d'authentification
Toutes les API de la classe FirebaseAuth peuvent générer des instances de
FirebaseAuthException. Les API asynchrones (par exemple, les méthodes qui renvoient un ApiFuture) peuvent échouer avec une ExecutionException qui encapsule une FirebaseAuthException. Les codes d'erreur spécifiques à l'authentification sont définis publiquement dans le nouveau type d'énumération AuthErrorCode.
Avant (<= 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");
}
}
Maintenant (>= 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");
}
}
Le AuthErrorCode s'ajoute au ErrorCode hérité du type de base
FirebaseException. Si nécessaire, vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur.
Modifications apportées à la gestion des erreurs FCM
Toutes les API de la classe FirebaseMessaging peuvent générer des instances de
FirebaseMessagingException. Les API asynchrones (par exemple, les méthodes qui renvoient un ApiFuture) peuvent échouer avec une ExecutionException qui encapsule une FirebaseMessagingException. Les codes d'erreur spécifiques à Authentication sont définis publiquement
dans le nouveau type d'énumération MessagingErrorCode.
Avant (<= 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");
}
}
Maintenant (>= 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");
}
}
Le MessagingErrorCode s'ajoute à ErrorCode hérité du
type de base FirebaseException. Si nécessaire, vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur.
Revendications personnalisées Authentication
La méthode obsolète FirebaseAuth.setCustomClaims() a été supprimée. Utilisez plutôt FirebaseAuth.setCustomUserClaims().
Avant (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Maintenant (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM constructeurs de notifications
Les constructeurs obsolètes de la classe Notification ont été supprimés. Utilisez la classe Notification.Builder pour créer des instances.
Avant (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Maintenant (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();