자바용 Firebase Admin SDK의 버전 7.0.0에는 몇 가지 중요한 API 변경사항이 있습니다. 기본적으로 이 출시 버전에 포함된 API 변경사항은 Authentication 및 FCM의 오류 처리에 대한 추가 및 개선 기능입니다.
일반적인 오류 처리 변경사항
FirebaseException 기본 클래스는 이제 다음과 같은 몇 가지 새로운 속성을 노출합니다.
ErrorCode getErrorCode(): 예외와 관련된 플랫폼 오류 코드를 반환합니다.FirebaseException의 모든 인스턴스에는 null이 아닌 플랫폼 오류 코드가 있습니다. 가능한 플랫폼 오류 코드는 새로운 열거형 유형ErrorCode로 정의됩니다.IncomingHttpResponse getHttpResponse(): 예외와 연결된 HTTP 응답을 반환합니다. 백엔드 HTTP 응답이 아닌 다른 이유로 예외가 발생한 경우 null이 될 수 있습니다.
이전과 마찬가지로 SDK에 정의된 대부분의 다른 예외 유형(예: FirebaseAuthException, FirebaseMessagingException)은 FirebaseException 기본 클래스에서 파생됩니다.
인증 오류 처리 변경사항
FirebaseAuth 클래스의 모든 API에서 FirebaseAuthException의 인스턴스를 생성할 수 있습니다. 비동기 API(예: ApiFuture를 반환하는 메서드)는 FirebaseAuthException을 래핑하는 ExecutionException으로 실패할 수 있습니다. 인증별 오류 코드는 새로운 열거형 유형 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는 기본 FirebaseException 유형에서 상속된 ErrorCode에 추가됩니다. 필요한 경우 두 가지 오류 코드를 모두 검사하는 오류 처리 로직을 구현할 수 있습니다.
FCM 오류 처리 변경사항
FirebaseMessaging 클래스의 모든 API에서 FirebaseMessagingException의 인스턴스를 생성할 수 있습니다. 비동기 API(예: ApiFuture를 반환하는 메서드)는 FirebaseMessagingException을 래핑하는 ExecutionException으로 실패할 수 있습니다. 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는 기본 FirebaseException 유형에서 상속된 ErrorCode에 추가됩니다. 필요한 경우 두 가지 오류 코드를 모두 검사하는 오류 처리 로직을 구현할 수 있습니다.
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();