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