자바 Admin SDK v7로 마이그레이션

자바용 Firebase Admin SDK의 버전 7.0.0에는 몇 가지 중요한 API 변경사항이 있습니다. 기본적으로 이 출시 버전에 포함된 API 변경사항은 인증 및 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으로 실패할 수 있습니다. 인증별 오류 코드는 새로운 열거형 유형 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에 추가됩니다. 필요한 경우 두 가지 오류 코드를 모두 검사하는 오류 처리 로직을 구현할 수 있습니다.

인증 커스텀 클레임

지원 중단된 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();