גרסה 7.0.0 של Firebase Admin SDK עבור Java מציגה כמה שינויים חשובים ב-API. בעיקר, השינויים ב-API במהדורה זו הם תוספות ושיפורים בטיפול בשגיאות עבור Authentication amd FCM.
שינויים כלליים בטיפול בשגיאות
מחלקת הבסיס FirebaseException
חושפת כעת מספר תכונות חדשות:
-
ErrorCode getErrorCode()
: מחזירה את קוד השגיאה של הפלטפורמה המשויך לחריג. מובטח לכל מופע שלFirebaseException
קוד שגיאת פלטפורמה שאינו ריק. קודי שגיאה אפשריים של פלטפורמה מוגדרים כ-Enum חדש מסוגErrorCode
. -
IncomingHttpResponse getHttpResponse()
: מחזירה את תגובת ה-HTTP המשויכת לחריג. עשוי להיות ריק אם החריג נגרם מסיבה שאינה תגובת HTTP עורפית.
כמו קודם, רוב סוגי החריגים האחרים שהוגדרו ב-SDK (לדוגמה, FirebaseAuthException
, FirebaseMessagingException
) נגזרים ממחלקת הבסיס FirebaseException
.
שגיאת אימות טיפול בשינויים
כל ממשקי ה-API במחלקה FirebaseAuth
עשויים לגרום למופעים של FirebaseAuthException
. ממשקי API Async (לדוגמה, שיטות המחזירות ApiFuture
) עלולים להיכשל עם ExecutionException
שעוטף FirebaseAuthException
. קודי השגיאה הספציפיים ל-Auth מוגדרים באופן ציבורי בסוג ה-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
. אתה יכול ליישם לוגיקה לטיפול בשגיאות שבודקת את שני קודי השגיאה במידת הצורך.
טיפול בשגיאות 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();