자바용 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();