La version 7.0.0 du SDK d'administration Firebase pour Java apporte des modifications importantes à l'API. Les modifications apportées à l'API dans cette version consistent principalement en des ajouts et des améliorations de la gestion des erreurs pour Authentication et FCM.
Modifications générales apportées au traitement des erreurs
La classe de base FirebaseException
expose désormais plusieurs nouveaux attributs :
ErrorCode getErrorCode()
: renvoie le code d'erreur de plate-forme associé à l'exception. Chaque instance deFirebaseException
est garantie d'avoir un code d'erreur de plate-forme non nul. Les codes d'erreur de plate-forme possibles sont définis en tant que 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 un autre motif qu'une réponse HTTP du backend.
Comme précédemment, la plupart des autres types d'exceptions définis dans le SDK (par exemple, FirebaseAuthException
, FirebaseMessagingException
) sont dérivés de la classe de base FirebaseException
.
Modifications apportées au traitement 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 un ExecutionException
qui encapsule un FirebaseAuthException
. Les codes d'erreur spécifiques à l'authentification sont définis publiquement dans le nouveau type d'énumération AuthErrorCode
.
Version antérieure (<= 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");
}
}
Désormais (>= 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");
}
}
AuthErrorCode
s'ajoute à ErrorCode
héritée du type FirebaseException
de base. Vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur si nécessaire.
Modifications apportées au traitement 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 un ExecutionException
qui encapsule un FirebaseMessagingException
. Les codes d'erreur spécifiques à Authentication sont définis publiquement dans le nouveau type d'énumération MessagingErrorCode
.
Version antérieure (<= 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 (version 7.0.0 ou ultérieure)
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");
}
}
MessagingErrorCode
s'ajoute à ErrorCode
héritée du type FirebaseException
de base. Vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur si nécessaire.
Revendications personnalisées Authentication
La méthode FirebaseAuth.setCustomClaims()
obsolète a été supprimée. Utilisez plutôt FirebaseAuth.setCustomUserClaims()
.
Version antérieure (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Maintenant (version 7.0.0 ou ultérieure)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Constructeurs de notification FCM
Les constructeurs obsolètes de la classe Notification
ont été supprimés. Utilisez la classe Notification.Builder
pour créer des instances.
Avant (versions antérieures à la version 6.15.0)
Notification notification = new Notification(title, body, url);
Désormais (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();