Wersja 7.0.0 pakietu Firebase Admin SDK na Javę wprowadza kilka ważnych zmian w interfejsie API. Zmiany w interfejsie API w tej wersji to przede wszystkim dodatki i ulepszenia w zakresie obsługi błędów w przypadku Authentication i FCM.
Ogólne zmiany w obsłudze błędów
Klasa bazowa FirebaseException udostępnia teraz kilka nowych atrybutów:
ErrorCode getErrorCode(): zwraca kod błędu platformy powiązany z wyjątkiem. Każda instancjaFirebaseExceptionma gwarantowany kod błędu platformy, który nie jest pusty. Możliwe kody błędów platformy są zdefiniowane jako nowy typ wyliczeniowyErrorCode.IncomingHttpResponse getHttpResponse(): zwraca odpowiedź HTTP powiązaną z wyjątkiem. Może mieć wartość null, jeśli wyjątek został spowodowany przez coś innego niż odpowiedź HTTP z backendu.
Podobnie jak wcześniej większość innych typów wyjątków zdefiniowanych w pakiecie SDK (np. FirebaseAuthException, FirebaseMessagingException) jest wyprowadzana z klasy bazowej FirebaseException.
Zmiany w obsłudze błędów uwierzytelniania
Wszystkie interfejsy API w klasie FirebaseAuth mogą zgłaszać instancje
FirebaseAuthException. Asynchroniczne interfejsy API (np. metody, które zwracają ApiFuture) mogą zakończyć się niepowodzeniem z powodu ExecutionException, który zawiera FirebaseAuthException. Kody błędów specyficzne dla uwierzytelniania są publicznie zdefiniowane w nowym typie wyliczeniowym AuthErrorCode.
Wcześniej (<= 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");
}
}
Teraz (>= 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 jest dodatkiem do ErrorCode odziedziczonego z klasy bazowej
FirebaseException typu. W razie potrzeby możesz zaimplementować logikę obsługi błędów, która sprawdza oba kody błędów.
Zmiany w obsłudze błędów FCM
Wszystkie interfejsy API w klasie FirebaseMessaging mogą zgłaszać instancje
FirebaseMessagingException. Asynchroniczne interfejsy API (np. metody, które zwracają ApiFuture) mogą zakończyć się niepowodzeniem z powodu ExecutionException, który zawiera FirebaseMessagingException. Kody błędów specyficzne dla Authentication są publicznie
zdefiniowane w nowym typie wyliczeniowym MessagingErrorCode.
Wcześniej (<= 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");
}
}
Teraz (>= 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");
}
}
MessagingErrorCode jest dodatkiem do ErrorCode odziedziczonego z
klasy bazowej FirebaseException. W razie potrzeby możesz zaimplementować logikę obsługi błędów, która sprawdza oba kody błędów.
Authentication niestandardowe roszczenia
Usunięto przestarzałą metodę FirebaseAuth.setCustomClaims(). Zamiast niej użyj FirebaseAuth.setCustomUserClaims().
Wcześniej (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Teraz (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM konstruktory powiadomień
Usunięto przestarzałe konstruktory klasy Notification. Do tworzenia nowych instancji używaj klasy Notification.Builder.
Wcześniej (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Teraz (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();