Przejdź na pakiet Java Admin SDK w wersji 7

Wersja 7.0.0 pakietu SDK Firebase Admin na platformę Java wprowadza ważne zmiany w interfejsie API. W tej wersji zmiany w interfejsie API to przede wszystkim dodatki i ulepszenia w obsłudze błędów w przypadku interfejsów AuthenticationFCM.

Ogólne zmiany dotyczące obsługi błędów

FirebaseException klasa podstawowa udostępnia teraz kilka nowych atrybutów:

  • ErrorCode getErrorCode(): zwraca kod błędu platformy powiązany z wyjątkiem. Każda instancja FirebaseException ma gwarantowany niezerowy kod błędu platformy. Możliwe kody błędów platformy są zdefiniowane jako nowy typ za pomocą enum ErrorCode.
  • IncomingHttpResponse getHttpResponse(): zwraca odpowiedź HTTP powiązaną z wyjątkiem. Może mieć wartość null, jeśli wyjątek jest spowodowany czymś innym niż odpowiedź HTTP backendu.

Podobnie jak wcześniej większość innych typów wyjątków zdefiniowanych w pakiecie SDK (np. FirebaseAuthException, FirebaseMessagingException) pochodzi z klasy bazowej FirebaseException.

Zmiany w obsłudze błędów uwierzytelniania

Wszystkie interfejsy API w klasie FirebaseAuth mogą wywołać instancje FirebaseAuthException. Interfejsy Async API (np. metody zwracające ApiFuture) mogą nie działać z użyciem ExecutionException, który otacza FirebaseAuthException. Kody błędów dotyczące uwierzytelniania są publicznie zdefiniowane w nowym typie wyliczenia AuthErrorCode.

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

Obecnie (≥ w wersji 7.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 jest dodatkowym atrybutem do ErrorCode odziedziczonego z typu bazowego FirebaseException. W razie potrzeby możesz zastosować logikę obsługi błędów, która sprawdza oba kody błędów.

FCM zmiany w obsłudze błędów

Wszystkie interfejsy API w klasie FirebaseMessaging mogą zgłaszać wyjątki FirebaseMessagingException. Asynchroniczne interfejsy API (na przykład metody, które zwracają wartość ApiFuture) mogą zakończyć się niepowodzeniem, jeśli ExecutionException opakowuje tag FirebaseMessagingException. Kody błędów typowe dla funkcji Authentication są publicznie zdefiniowane w nowym typie wyliczenia MessagingErrorCode.

Wersja 6.15.0 i starsze

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

Now (wersja 7.0.0 lub nowsza)

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

Ustawienie MessagingErrorCode jest oprócz ustawienia ErrorCode odziedziczonego z typu bazowego FirebaseException. W razie potrzeby możesz zastosować logikę obsługi błędów, która sprawdza oba kody błędów.

Authentication roszczenia niestandardowe

Wycofana metoda FirebaseAuth.setCustomClaims() została usunięta. Zamiast niego użyj właściwości FirebaseAuth.setCustomUserClaims().

Wersja 6.15.0 i starsze

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

Now (wersja 7.0.0 lub nowsza)

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

FCM konstruktora powiadomień

Wycofane konstruktory klasy Notification zostały usunięte. Użyj klasy Notification.Builder, aby utworzyć nowe instancje.

Przed (<= wersja 6.15.0)

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

Obecnie (≥ w wersji 7.0.0)

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