Esegui la migrazione a Java Admin SDK v7

La versione 7.0.0 dell'SDK Firebase Admin per Java introduce alcune modifiche importanti nell'API. Le modifiche all'API in questa release riguardano principalmente aggiunte e miglioramenti alla gestione degli errori per Authentication e FCM.

Modifiche generali alla gestione degli errori

La classe base FirebaseException ora espone diversi nuovi attributi:

  • ErrorCode getErrorCode(): restituisce il codice di errore della piattaforma associato all'eccezione. Per ogni istanza di FirebaseException è garantito che il codice di errore della piattaforma sia diverso da null. I possibili codici di errore della piattaforma sono definiti come un nuovo tipo di enum ErrorCode.
  • IncomingHttpResponse getHttpResponse(): restituisce la risposta HTTP associata all'eccezione. Può essere nullo se l'eccezione è stata causata da un motivo diverso da una risposta HTTP di backend.

Come in precedenza, la maggior parte degli altri tipi di eccezioni definiti nell'SDK (ad esempio FirebaseAuthException, FirebaseMessagingException) è derivata dalla classe di base FirebaseException.

Modifiche alla gestione degli errori di autorizzazione

Tutte le API della classe FirebaseAuth possono generare istanze di FirebaseAuthException. Le API asincrone (ad esempio i metodi che restituiscono un ApiFuture) potrebbero non riuscire con un ExecutionException che avvolge un FirebaseAuthException. I codici di errore specifici per l'autenticazione sono definiti pubblicamente nel nuovo tipo di enum AuthErrorCode.

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

Ora (>= 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 si aggiunge a ErrorCode ereditato dal tipo baseFirebaseException. Se necessario, puoi implementare una logica di gestione degli errori che esamini entrambi i codici di errore.

FCM modifiche alla gestione degli errori

Tutte le API nella classe FirebaseMessaging possono generare istanze di FirebaseMessagingException. Le API asincrone (ad esempio, i metodi che restituiscono un ApiFuture) potrebbero avere esito negativo con un ExecutionException che aggrega un FirebaseMessagingException. I codici di errore specifici di Authentication sono definiti pubblicamente nel nuovo tipo di enum MessagingErrorCode.

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

Ora (>= 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 si aggiunge al ErrorCode ereditato dal tipo FirebaseException di base. Se necessario, puoi implementare una logica di gestione degli errori che esamini entrambi i codici di errore.

Authentication rivendicazioni personalizzate

Il metodo FirebaseAuth.setCustomClaims() deprecato è stato rimosso. Utilizza invece FirebaseAuth.setCustomUserClaims().

Prima (<= v6.15.0)

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

Ora (>= v7.0.0)

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

FCM Costruttori di notifiche

I costruttori obsoleti della classe Notification sono stati rimossi. Utilizza la classe Notification.Builder per creare nuove istanze.

Versioni precedenti (<= v6.15.0)

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

Ora (>= v7.0.0)

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