Migrieren Sie auf Java Admin SDK v7

Version 7.0.0 des Firebase Admin SDK für Java führt einige wichtige Änderungen in der API ein. Bei den API-Änderungen in dieser Version handelt es sich in erster Linie um Ergänzungen und Verbesserungen bei der Fehlerbehandlung für Authentifizierung und FCM.

Allgemeine Änderungen bei der Fehlerbehandlung

FirebaseException Basisklasse stellt jetzt mehrere neue Attribute bereit:

  • ErrorCode getErrorCode() : Gibt den mit der Ausnahme verbundenen Plattformfehlercode zurück. Es ist garantiert, dass jede Instanz von FirebaseException einen Plattformfehlercode ungleich Null aufweist. Mögliche Plattformfehlercodes werden als neuer Enum-Typ ErrorCode definiert.
  • IncomingHttpResponse getHttpResponse() : Gibt die mit der Ausnahme verknüpfte HTTP-Antwort zurück. Kann null sein, wenn die Ausnahme durch einen anderen Grund als eine Back-End-HTTP-Antwort verursacht wurde.

Wie zuvor werden die meisten anderen im SDK definierten Ausnahmetypen (z. B. FirebaseAuthException , FirebaseMessagingException ) von der FirebaseException Basisklasse abgeleitet.

Änderungen bei der Behandlung von Authentifizierungsfehlern

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

Vorher (<= 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");
  }
}

Jetzt (>= 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");
  }
}

Der AuthErrorCode ist zusätzlich zum ErrorCode , der vom Basistyp FirebaseException geerbt wurde. Sie können eine Fehlerbehandlungslogik implementieren, die bei Bedarf beide Fehlercodes überprüft.

Änderungen bei der FCM-Fehlerbehandlung

Alle APIs in FirebaseMessaging Klasse können Instanzen von FirebaseMessagingException auslösen. Asynchrone APIs (z. B. Methoden, die ein ApiFuture zurückgeben) können mit einer ExecutionException fehlschlagen, die eine FirebaseMessagingException umschließt. Die authentifizierungsspezifischen Fehlercodes werden im neuen Enum-Typ MessagingErrorCode öffentlich definiert.

Vorher (<= 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");
  }
}

Jetzt (>= 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");
  }
}

Der MessagingErrorCode ist zusätzlich zum ErrorCode , der vom Basistyp FirebaseException geerbt wurde. Sie können eine Fehlerbehandlungslogik implementieren, die bei Bedarf beide Fehlercodes überprüft.

Benutzerdefinierte Authentifizierungsansprüche

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

Vorher (<= v6.15.0)

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

Jetzt (>= v7.0.0)

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

FCM-Benachrichtigungskonstruktoren

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

Vorher (<= v6.15.0)

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

Jetzt (>= v7.0.0)

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