В версии 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();