העבר אל Java Admin SDK v7

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