Zum Java Admin SDK v7 migrieren

Version 7.0.0 des Firebase Admin SDK für Java bringt einige wichtige Änderungen an der API mit sich. Die API-Änderungen in dieser Version umfassen hauptsächlich Ergänzungen und Verbesserungen bei der Fehlerbehandlung für Authentication und FCM.

Änderungen bei der allgemeinen Fehlerbehandlung

Die Basisklasse FirebaseException weist jetzt mehrere neue Attribute auf:

  • ErrorCode getErrorCode(): Gibt den Plattformfehlercode zurück, der mit der Ausnahme verknüpft ist. Jede Instanz von FirebaseException hat garantiert einen nicht nullwertigen Plattformfehlercode. Mögliche Plattformfehlercodes werden als neuer Enum-Typ ErrorCode definiert.
  • IncomingHttpResponse getHttpResponse(): Gibt die HTTP-Antwort zurück, die mit der Ausnahme verknüpft ist. Kann null sein, wenn die Ausnahme aus einem anderen Grund als einer Back-End-HTTP-Antwort verursacht wurde.

Wie bereits erwähnt, sind die meisten anderen im SDK definierten Ausnahmetypen (z. B. FirebaseAuthException, FirebaseMessagingException) von der Basisklasse FirebaseException abgeleitet.

Änderungen bei der Authentifizierungsfehlerbehandlung

Alle APIs der Klasse FirebaseAuth können Instanzen von FirebaseAuthException auswerfen. Asynchrone APIs (z. B. Methoden, die ein ApiFuture zurückgeben) können mit einem ExecutionException fehlschlagen, der einen FirebaseAuthException umschließt. Die Auth-spezifischen Fehlercodes sind im neuen Enum-Typ AuthErrorCode öffentlich definiert.

Vorher (bis Version 6.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");
  }
}

Jetzt (Version 7.0.0 und höher)

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 ist zusätzlich zu ErrorCode, das vom Basistyp FirebaseException übernommen wird. Sie können eine Fehlerbehandlungslogik implementieren, die bei Bedarf beide Fehlercodes prüft.

Änderungen an der FCM-Fehlerbehandlung

Alle APIs der Klasse FirebaseMessaging können Instanzen von FirebaseMessagingException auswerfen. Asynchrone APIs (z. B. Methoden, die eine ApiFuture zurückgeben) können mit einer ExecutionException fehlschlagen, die eine FirebaseMessagingException umschließt. Die Authentication-spezifischen Fehlercodes sind im neuen Enum-Typ MessagingErrorCode öffentlich definiert.

Vorher (bis Version 6.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");
  }
}

Jetzt (Version 7.0.0 und höher)

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 ist zusätzlich zu ErrorCode, das vom Basistyp FirebaseException übernommen wird. Sie können bei Bedarf eine Logik zur Fehlerbehandlung implementieren, die beide Fehlercodes überprüft.

Authentication benutzerdefinierte Ansprüche

Die verworfene Methode FirebaseAuth.setCustomClaims() wurde entfernt. Verwenden Sie stattdessen FirebaseAuth.setCustomUserClaims().

Vorher (bis Version 6.15.0)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

Jetzt (Version 7.0.0 und höher)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

FCM Benachrichtigungskonstruktoren

Die verworfenen Konstruktoren der Klasse Notification wurden entfernt. Verwenden Sie die Notification.Builder-Klasse, um neue Instanzen zu erstellen.

Vorher (bis Version 6.15.0)

Notification notification = new Notification(title, body, url);

Jetzt (Version 7.0.0 und höher)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();