גרסה 7.0.0 של Firebase Admin SDK for Java כוללת כמה שינויים חשובים ב-API. השינויים העיקריים ב-API בגרסה הזו הם תוספות ושיפורים בטיפול בשגיאות ב-Authentication וב-FCM.
שינויים כלליים בטיפול בשגיאות
מחלקת הבסיס FirebaseException
חושפת עכשיו כמה מאפיינים חדשים:
-
ErrorCode getErrorCode()
: מחזירה את קוד השגיאה של הפלטפורמה שמשויך לחריגה. לכל מופע שלFirebaseException
מובטח שיהיה קוד שגיאה של הפלטפורמה שאינו null. קודי השגיאה האפשריים בפלטפורמה מוגדרים כסוג enum חדשErrorCode
. -
IncomingHttpResponse getHttpResponse()
: מחזירה את תגובת ה-HTTP שמשויכת לחריגה. יכול להיות null אם החריגה נגרמה מסיבה אחרת ולא מתשובת HTTP של השרת העורפי.
כמו קודם, רוב סוגי החריגים האחרים שמוגדרים ב-SDK (לדוגמה, FirebaseAuthException
, FirebaseMessagingException
) נגזרים ממחלקת הבסיס FirebaseException
.
שינויים בטיפול בשגיאות באימות
כל ממשקי ה-API במחלקה FirebaseAuth
עשויים להחזיר מופעים של
FirebaseAuthException
. יכול להיות ש-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
הבסיסי. במקרה הצורך, אפשר להטמיע לוגיקה לטיפול בשגיאות שבודקת את שני קודי השגיאה.
FCM שינויים בטיפול בשגיאות
כל ממשקי ה-API במחלקה FirebaseMessaging
עשויים להחזיר מופעים של FirebaseMessagingException
. יכול להיות ש-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
הבסיסי. במקרה הצורך, אפשר להטמיע לוגיקה לטיפול בשגיאות שבודקת את שני קודי השגיאה.
Authentication טענות מותאמות אישית
השיטה FirebaseAuth.setCustomClaims()
שהוצאה משימוש הוסרה. במקום זאת, צריך להשתמש ב-FirebaseAuth.setCustomUserClaims()
.
לפני (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
עכשיו (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
FCM notification constructors
הוסרו בנאים שהוצאו משימוש במחלקה 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();