Di chuyển sang SDK quản trị Java v7

Phiên bản 7.0.0 của SDK quản trị Firebase dành cho Java giới thiệu một số thay đổi quan trọng trong API. Về cơ bản, những thay đổi về API trong bản phát hành này là những bổ sung và cải tiến trong việc xử lý lỗi cho Xác thực amd FCM.

Thay đổi xử lý lỗi chung

Lớp cơ sở FirebaseException hiện hiển thị một số thuộc tính mới:

  • ErrorCode getErrorCode() : Trả về mã lỗi nền tảng liên quan đến ngoại lệ. Mọi phiên bản của FirebaseException đều được đảm bảo có mã lỗi nền tảng không rỗng. Các mã lỗi nền tảng có thể xảy ra được xác định là loại enum mới ErrorCode .
  • IncomingHttpResponse getHttpResponse() : Trả về phản hồi HTTP được liên kết với ngoại lệ. Có thể không có giá trị 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 .

Thay đổi xử lý lỗi xác thực

Tất cả các API trong lớp FirebaseAuth có thể đưa ra các phiên bản của FirebaseAuthException . 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 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");
  }
}

Bây giờ (>= 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 nằm 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.

Thay đổi xử lý lỗi FCM

Tất cả các API trong lớp FirebaseMessaging có thể đưa ra các phiên bản FirebaseMessagingException . 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 Xác thực đượ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");
  }
}

Bây giờ (>= 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 nằm 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.

Xác nhận quyền sở hữu tùy chỉnh

Phương thức FirebaseAuth.setCustomClaims() không được dùng nữa đã bị xóa. Thay vào đó, hãy sử dụng FirebaseAuth.setCustomUserClaims() .

Trước (<= v6.15.0)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

Bây giờ (>= v7.0.0)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

Trình tạo thông báo FCM

Các hàm tạo không được dùng nữa của lớp Notification đã bị xóa. Sử dụng lớp Notification.Builder để tạo phiên bản mới.

Trước (<= v6.15.0)

Notification notification = new Notification(title, body, url);

Bây giờ (>= v7.0.0)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();