Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Переход на Java Admin SDK v7

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

В версии 7.0.0 Firebase Admin SDK для Java внесены некоторые важные изменения в API. Прежде всего, изменения API в этом выпуске — это дополнения и улучшения в обработке ошибок для аутентификации и FCM.

Общие изменения обработки ошибок

Базовый класс FirebaseException теперь предоставляет несколько новых атрибутов:

  • ErrorCode getErrorCode() : возвращает код ошибки платформы, связанный с исключением. Каждый экземпляр FirebaseException гарантированно будет иметь ненулевой код ошибки платформы. Возможные коды ошибок платформы определяются как новый тип перечисления ErrorCode .
  • IncomingHttpResponse getHttpResponse() : возвращает HTTP-ответ, связанный с исключением. Может иметь значение null, если исключение было вызвано причиной, отличной от HTTP-ответа серверной части.

Как и прежде, большинство других типов исключений, определенных в SDK (например, FirebaseAuthException , FirebaseMessagingException ), являются производными от базового класса FirebaseException .

Изменения в обработке ошибок аутентификации

Все API в классе FirebaseAuth могут создавать экземпляры FirebaseAuthException . Асинхронные API (например, методы, которые возвращают ApiFuture ) могут завершиться с ошибкой ExecutionException , которая оборачивает FirebaseAuthException . Коды ошибок, характерные для аутентификации, общедоступно определены в новом типе перечисления AuthErrorCode .

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

Сейчас (>= 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 является дополнением к ErrorCode , унаследованному от базового типа FirebaseException . Вы можете реализовать логику обработки ошибок, которая при необходимости проверяет оба кода ошибки.

Изменения в обработке ошибок FCM

Все API в классе FirebaseMessaging могут генерировать экземпляры FirebaseMessagingException . Асинхронные API (например, методы, возвращающие ApiFuture ) могут завершиться с ошибкой ExecutionException , которая является оболочкой для FirebaseMessagingException . Коды ошибок, относящиеся к аутентификации, общедоступно определены в новом типе перечисления MessagingErrorCode .

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

Сейчас (>= 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 является дополнением к ErrorCode , унаследованному от базового типа FirebaseException . Вы можете реализовать логику обработки ошибок, которая при необходимости проверяет оба кода ошибки.

Пользовательские утверждения аутентификации

Устаревший метод FirebaseAuth.setCustomClaims() был удален. Вместо этого используйте FirebaseAuth.setCustomUserClaims() .

До (<= v6.15.0)

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

Сейчас (>= v7.0.0)

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

Конструкторы уведомлений FCM

Устаревшие конструкторы класса Notification были удалены. Используйте класс Notification.Builder для создания новых экземпляров.

До (<= v6.15.0)

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

Сейчас (>= v7.0.0)

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