Version 7.0.0 des Firebase Admin SDK für Java enthält einige wichtige API-Änderungen. Die API-Änderungen in dieser Version sind hauptsächlich Ergänzungen und Verbesserungen bei der Fehlerbehandlung für Authentication und FCM.
Allgemeine Änderungen bei der Fehlerbehandlung
Die Basisklasse FirebaseException stellt jetzt mehrere neue Attribute zur Verfügung:
ErrorCode getErrorCode(): Gibt den Plattformfehlercode zurück, der mit der Ausnahme verknüpft ist. Jede Instanz vonFirebaseExceptionhat garantiert einen Plattformfehlercode, der nicht null ist. Mögliche Plattformfehlercodes sind als neuer Enum-TypErrorCodedefiniert.IncomingHttpResponse getHttpResponse(): Gibt die HTTP-Antwort zurück, die mit der Ausnahme verknüpft ist. Kann null sein, wenn die Ausnahme nicht durch eine Backend-HTTP-Antwort verursacht wurde.
Wie bisher werden die meisten anderen im SDK definierten Ausnahmetypen (z. B. FirebaseAuthException, FirebaseMessagingException) von der Basisklasse FirebaseException abgeleitet.
Änderungen bei der Fehlerbehandlung für Authentication
Alle APIs in der Klasse FirebaseAuth 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 sind öffentlich im neuen Enum-Typ AuthErrorCode definiert.
Vorher (<= 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)
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 kommt zusätzlich zum ErrorCode hinzu, der vom Basis
FirebaseException Typ übernommen wurde. Sie können bei Bedarf eine Fehlerbehandlungslogik implementieren, die beide Fehlercodes prüft.
Änderungen bei der Fehlerbehandlung für FCM
Alle APIs in der Klasse FirebaseMessaging 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 Authentication-spezifischen Fehlercodes sind öffentlich
im neuen Enum-Typ MessagingErrorCode definiert.
Vorher (<= 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)
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 kommt zusätzlich zum ErrorCode hinzu, der vom
Basis-Typ FirebaseException übernommen wurde. Sie können bei Bedarf eine Fehlerbehandlungslogik implementieren, die beide Fehlercodes prüft.
Authentication benutzerdefinierte Ansprüche
Die verworfene Methode FirebaseAuth.setCustomClaims() wurde entfernt. Verwenden Sie stattdessen FirebaseAuth.setCustomUserClaims().
Vorher (<= Version 6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Jetzt (>= Version 7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM Benachrichtigungskonstruktoren
Die verworfenen Konstruktoren der Klasse Notification wurden entfernt. Verwenden Sie die Klasse Notification.Builder, um neue Instanzen zu erstellen.
Vorher (<= Version 6.15.0)
Notification notification = new Notification(title, body, url);
Jetzt (>= Version 7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();