Di chuyển sang SDK quản trị viên Java phiên bản 7

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 AuthenticationFCM.

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ủa FirebaseException đề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ới ErrorCode.
  • 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();