מעבר אל Java Admin SDK גרסה 7

גרסה 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();