Firebase Admin SDK สำหรับ Java เวอร์ชัน 7.0.0 นำเสนอการเปลี่ยนแปลงที่สำคัญบางประการใน API โดยพื้นฐานแล้ว การเปลี่ยนแปลง API ในรีลีสนี้เป็นการเพิ่มเติมและปรับปรุงการจัดการข้อผิดพลาดสำหรับ Authentication amd FCM
การเปลี่ยนแปลงการจัดการข้อผิดพลาดทั่วไป
ขณะนี้คลาสฐาน FirebaseException
เปิดเผยคุณลักษณะใหม่หลายประการ:
-
ErrorCode getErrorCode()
: ส่งคืนรหัสข้อผิดพลาดของแพลตฟอร์มที่เกี่ยวข้องกับข้อยกเว้น รับประกันว่าทุกอินสแตนซ์ของFirebaseException
จะมีรหัสข้อผิดพลาดของแพลตฟอร์มที่ไม่เป็นค่าว่าง รหัสข้อผิดพลาดของแพลตฟอร์มที่เป็นไปได้ถูกกำหนดให้เป็นErrorCode
ชนิด enum ใหม่ -
IncomingHttpResponse getHttpResponse()
: ส่งคืนการตอบสนอง HTTP ที่เกี่ยวข้องกับข้อยกเว้น อาจเป็นโมฆะหากข้อยกเว้นเกิดจากสาเหตุอื่นที่ไม่ใช่การตอบสนอง HTTP ของแบ็กเอนด์
เช่นเดียวกับก่อนหน้านี้ ประเภทข้อยกเว้นอื่นๆ ส่วนใหญ่ที่กำหนดไว้ใน SDK (เช่น FirebaseAuthException
, FirebaseMessagingException
) ได้มาจากคลาสพื้นฐาน FirebaseException
การเปลี่ยนแปลงการจัดการข้อผิดพลาดในการตรวจสอบสิทธิ์
API ทั้งหมดในคลาส FirebaseAuth
อาจส่งอินสแตนซ์ของ FirebaseAuthException
Async API (เช่น วิธีการส่งคืน ApiFuture
) อาจล้มเหลวด้วย ExecutionException
ที่ล้อม FirebaseAuthException
รหัสข้อผิดพลาดเฉพาะ Auth ถูกกำหนดต่อสาธารณะใน AuthErrorCode
ประเภท enum ใหม่
ก่อน (<= 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
เป็นส่วนเพิ่มเติมจาก ErrorCode
ที่สืบทอดมาจากประเภท FirebaseException
พื้นฐาน คุณสามารถใช้ตรรกะการจัดการข้อผิดพลาดที่จะตรวจสอบรหัสข้อผิดพลาดทั้งสองได้หากจำเป็น
การเปลี่ยนแปลงการจัดการข้อผิดพลาด FCM
API ทั้งหมดในคลาส FirebaseMessaging
อาจส่งอินสแตนซ์ของ FirebaseMessagingException
Async APIs (เช่น วิธีการส่งคืน ApiFuture
) อาจล้มเหลวด้วย ExecutionException
ที่ล้อม FirebaseMessagingException
รหัสข้อผิดพลาดเฉพาะการรับรองความถูกต้องถูกกำหนดต่อสาธารณะในชนิด enum ใหม่ 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
เป็นส่วนเพิ่มเติมจาก ErrorCode
ที่สืบทอดมาจากประเภท FirebaseException
พื้นฐาน คุณสามารถใช้ตรรกะการจัดการข้อผิดพลาดที่จะตรวจสอบรหัสข้อผิดพลาดทั้งสองได้หากจำเป็น
การอ้างสิทธิ์ที่กำหนดเองในการตรวจสอบสิทธิ์
เมธอด 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();