انتقال به Java Admin SDK v7

نسخه ۷.۰.۰ از Firebase Admin SDK برای Java برخی‌از تغییرات مهم را در میانای برنامه‌سازی کاربردی معرفی می‌کند. در درجه اول، تغییرات API در این نسخه پخش شامل افزودن و بهبود در رسیدگی به خطا برای Authentication و FCM است.

تغییرات رسیدگی به خطای عمومی

کلاس پایه FirebaseException اکنون چندین مشخصه جدید را نشان می‌دهد:

  • ErrorCode getErrorCode(): کد خطای پلاتفرم مرتبط با استثنا را برمی‌گرداند. تضمین می‌شود که هر نمونه از FirebaseException دارای کد خطای پلاتفرم غیرتهی باشد. کدهای خطای احتمالی پلاتفرم به‌عنوان نوع شمارشی جدید ErrorCode تعریف شده‌اند.
  • IncomingHttpResponse getHttpResponse(): پاسخ‌های HTTP مرتبط با استثنا را برمی‌گرداند. اگر استثنا به‌دلیلی غیراز پاسخ‌های HTTP باطن ایجاد شده باشد، ممکن است تهی باشد.

مانند قبل، اکثر انواع استثناهای دیگر تعریف‌شده در کیت توسعه نرم‌افزار (برای مثال، FirebaseAuthException، FirebaseMessagingException) از کلاس پایه FirebaseException مشتق شده‌اند.

خطای اصالت‌سنجی در رسیدگی به تغییرات

همه میاناهای برنامه‌سازی کاربردی در کلاس FirebaseAuth ممکن است نمونه‌هایی از FirebaseAuthException را ایجاد کنند. میاناهای برنامه‌سازی کاربردی ناهمگام (برای مثال، روش‌هایی که ApiFuture را برمی‌گردانند) ممکن است با ExecutionException که FirebaseAuthException را دربرمی‌گیرد ناموفق شوند. کدهای خطای مختص Auth به‌طور عمومی در نوع شمارشی جدید AuthErrorCode تعریف شده‌اند.

قبل‌از (نسخه ۶.۱۵.۰ یا قدیمی‌تر)

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 تغییر در مدیریت کردن خطا

همه میاناهای برنامه‌سازی کاربردی در کلاس FirebaseMessaging ممکن است نمونه‌هایی از FirebaseMessagingException را ایجاد کنند. میاناهای برنامه‌سازی کاربردی ناهمگام (برای مثال، روش‌هایی که ApiFuture را برمی‌گردانند) ممکن است با ExecutionException که FirebaseMessagingException را دربرمی‌گیرد ناموفق شوند. کدهای خطای مختص Authentication به‌طور عمومی در نوع شمارشی جدید MessagingErrorCode تعریف شده‌اند.

قبل‌از (نسخه ۶.۱۵.۰ یا قدیمی‌تر)

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() استفاده کنید.

قبل‌از (نسخه ۶.۱۵.۰ و قدیمی‌تر)

FirebaseAuth.getInstance().setCustomClaims(uid, claims);

اکنون (>= v7.0.0)

FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);

‫FCM سازنده اعلان

سازنده‌های منسوخ‌شده کلاس Notification برداشته شده‌اند. از کلاس Notification.Builder برای ایجاد نمونه‌های جدید استفاده کنید.

قبل‌از (نسخه ۶.۱۵.۰ یا قدیمی‌تر)

Notification notification = new Notification(title, body, url);

اکنون (>= v7.0.0)

Notification notification = Notification.builder()
  .setTitle(title)
  .setBody(body)
  .setImage(url)
  .build();