Phiên bản 7.0.0 của Firebase Admin SDK cho Java có một số thay đổi quan trọng trong API. Chủ yếu, các thay đổi về API trong bản phát hành này là những điểm bổ sung và cải tiến trong quá trình xử lý lỗi cho Authentication và FCM.
Các thay đổi chung về việc xử lý lỗi
Lớp cơ sở FirebaseException
hiện cung cấp một số thuộc tính mới:
ErrorCode getErrorCode()
: Trả về mã lỗi nền tảng liên kết với ngoại lệ. Mọi thực thể củaFirebaseException
đều đảm bảo có mã lỗi nền tảng không phải rỗng. Các mã lỗi có thể có của nền tảng được xác định là một loại enum mớiErrorCode
.IncomingHttpResponse getHttpResponse()
: Trả về phản hồi HTTP liên kết với ngoại lệ. Có thể là giá trị rỗng nếu ngoại lệ xảy ra do một lý do khác ngoài phản hồi HTTP phụ trợ.
Giống như trước đây, hầu hết các loại ngoại lệ khác được xác định trong SDK (ví dụ: FirebaseAuthException
, FirebaseMessagingException
) đều bắt nguồn từ lớp cơ sở FirebaseException
.
Các thay đổi về cách xử lý lỗi xác thực
Tất cả API trong lớp FirebaseAuth
đều có thể truyền các thực thể của FirebaseAuthException
. Các API không đồng bộ (ví dụ: các phương thức trả về ApiFuture
) có thể không thành công với ExecutionException
bao bọc FirebaseAuthException
. Mã lỗi dành riêng cho quy trình xác thực được xác định công khai trong loại enum mới AuthErrorCode
.
Trước (<= 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");
}
}
Hiện tại (>= 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
ngoài ErrorCode
được kế thừa từ loại FirebaseException
cơ sở. Bạn có thể triển khai logic xử lý lỗi để kiểm tra cả mã lỗi nếu cần.
FCM thay đổi về cách xử lý lỗi
Tất cả các API trong lớp FirebaseMessaging
đều có thể gửi các thực thể của FirebaseMessagingException
. Các API không đồng bộ (ví dụ: các phương thức trả về ApiFuture
) có thể không thành công với ExecutionException
bao bọc FirebaseMessagingException
. Mã lỗi dành riêng cho Authentication được xác định công khai trong loại enum mới MessagingErrorCode
.
Trước (<= 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");
}
}
Hiện tại (>= 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
là ngoài ErrorCode
được kế thừa từ loại FirebaseException
cơ sở. Bạn có thể triển khai logic xử lý lỗi để kiểm tra cả hai mã lỗi nếu cần.
Authentication thông báo xác nhận quyền sở hữu tuỳ chỉnh
Phương thức FirebaseAuth.setCustomClaims()
không dùng nữa đã bị xoá. Thay vào đó, hãy sử dụng FirebaseAuth.setCustomUserClaims()
.
Trước (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Hiện tại (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Trình tạo thông báo FCM
Các hàm khởi tạo không dùng nữa của lớp Notification
đã bị xoá. Dùng lớp Notification.Builder
để tạo các thực thể mới.
Trước (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Hiện tại (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();