Migrer vers Java Admin SDK v7

La version 7.0.0 du SDK Firebase Admin pour Java introduit des modifications importantes dans l'API. Principalement, les modifications de l'API dans cette version sont des ajouts et des améliorations dans la gestion des erreurs pour l'authentification et FCM.

Modifications générales de la gestion des erreurs

La classe de base FirebaseException expose désormais plusieurs nouveaux attributs :

  • ErrorCode getErrorCode() : Renvoie le code d'erreur de la plateforme associé à l'exception. Chaque instance de FirebaseException est garantie d'avoir un code d'erreur de plate-forme non nul. Les codes d'erreur possibles de la plate-forme sont définis comme un nouveau type d'énumération ErrorCode .
  • IncomingHttpResponse getHttpResponse() : Renvoie la réponse HTTP associée à l'exception. Peut être nul si l'exception a été provoquée par une raison autre qu'une réponse HTTP backend.

Comme auparavant, 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 de la gestion des erreurs d'authentification

Toutes les API de la classe FirebaseAuth peuvent lancer 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 à Auth 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 . Vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur si nécessaire.

Modifications de la gestion des erreurs FCM

Toutes les API de la classe FirebaseMessaging peuvent lancer des instances de FirebaseMessagingException . Les API asynchrones (par exemple, les méthodes qui renvoient une ApiFuture ) peuvent échouer avec une ExecutionException qui encapsule une FirebaseMessagingException . Les codes d'erreur spécifiques à l'authentification 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 au ErrorCode hérité du type de base FirebaseException . Vous pouvez implémenter une logique de gestion des erreurs qui inspecte les deux codes d'erreur si nécessaire.

Revendications personnalisées d'authentification

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);

Constructeurs de notifications FCM

Les constructeurs obsolètes de la classe Notification ont été supprimés. Utilisez la classe Notification.Builder pour créer de nouvelles 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();