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. Principalmente, le modifiche all'API in questa release riguardano aggiunte e miglioramenti nella 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. Ogni istanza di FirebaseException ha la garanzia di avere un codice di errore della piattaforma non nullo. I possibili codici di errore della piattaforma sono definiti come un nuovo tipo di enumerazione ErrorCode.
  • IncomingHttpResponse getHttpResponse(): restituisce la risposta HTTP associata all'eccezione. Può essere null 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 eccezione definiti nell'SDK (ad esempio, FirebaseAuthException, FirebaseMessagingException) derivano dalla classe base FirebaseException.

Modifiche alla gestione degli errori di autenticazione

Tutte le API nella 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 racchiude un FirebaseAuthException. I codici di errore specifici per l'autenticazione sono definiti pubblicamente nel nuovo tipo di enumerazione AuthErrorCode.

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

Il AuthErrorCode si aggiunge al ErrorCode ereditato dal tipo FirebaseException di base. Se necessario, puoi implementare una logica di gestione degli errori che esamina 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 non riuscire con un ExecutionException che racchiude un FirebaseMessagingException. I codici di errore specifici di Authentication sono definiti pubblicamente nel nuovo tipo di enumerazione 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");
  }
}

Il valore MessagingErrorCode si aggiunge al valore ErrorCode ereditato dal tipo FirebaseException di base. Se necessario, puoi implementare una logica di gestione degli errori che controlli 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.

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