الترحيل إلى Java Admin SDK v7

يقدم الإصدار 7.0.0 من Firebase Admin SDK لـ Java بعض التغييرات المهمة في واجهة برمجة التطبيقات. في المقام الأول، تعد تغييرات واجهة برمجة التطبيقات (API) في هذا الإصدار بمثابة إضافات وتحسينات في معالجة الأخطاء في عملية المصادقة AMD FCM.

تغييرات معالجة الأخطاء العامة

تكشف فئة FirebaseException الأساسية الآن عن عدة سمات جديدة:

  • ErrorCode getErrorCode() : يُرجع رمز خطأ النظام الأساسي المرتبط بالاستثناء. يتم ضمان أن يكون لكل مثيل لـ FirebaseException رمز خطأ للنظام الأساسي غير فارغ. يتم تعريف رموز خطأ النظام الأساسي المحتملة على أنها نوع تعداد جديد ErrorCode .
  • IncomingHttpResponse getHttpResponse() : إرجاع استجابة HTTP المرتبطة بالاستثناء. قد يكون فارغًا إذا كان الاستثناء ناتجًا عن سبب آخر غير استجابة HTTP الخلفية.

كما كان من قبل، فإن معظم أنواع الاستثناءات الأخرى المحددة في SDK (على سبيل المثال، FirebaseAuthException ، FirebaseMessagingException ) مشتقة من الفئة الأساسية FirebaseException .

خطأ في معالجة التغييرات في المصادقة

قد تقوم كافة واجهات برمجة التطبيقات في فئة FirebaseAuth بطرح مثيلات FirebaseAuthException . قد تفشل واجهات برمجة التطبيقات غير المتزامنة (على سبيل المثال، الأساليب التي تُرجع ApiFuture ) مع ExecutionException الذي يلتف FirebaseAuthException . يتم تعريف رموز الخطأ الخاصة بالمصادقة علنًا في نوع التعداد الجديد 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");
  }
}

الآن (>= الإصدار 7.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 . يتم تعريف رموز الخطأ الخاصة بالمصادقة علنًا في نوع التعداد الجديد 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");
  }
}

الآن (>= الإصدار 7.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);

الآن (>= الإصدار 7.0.0)

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

منشئو الإخطار FCM

تمت إزالة المُنشئين المهملين لفئة Notification . استخدم فئة Notification.Builder لإنشاء مثيلات جديدة.

قبل (<= v6.15.0)

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

الآن (>= الإصدار 7.0.0)

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