В версии 7.0.0 Firebase Admin SDK для Java внесены важные изменения в API. В первую очередь, изменения в API в этом релизе касаются дополнений и улучшений в обработке ошибок для Authentication и 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 . Коды ошибок, специфичные Authentication , определены публично в новом перечислении 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 . При необходимости можно реализовать логику обработки ошибок, которая проверяет оба кода.
Пользовательские утверждения Authentication
Устаревший метод 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();