نسخه 7.0.0 Firebase Admin SDK برای جاوا تغییرات مهمی را در API معرفی می کند. در درجه اول، تغییرات API در این نسخه افزودهها و بهبودهایی در مدیریت خطا برای Authentication و FCM هستند.
تغییرات رسیدگی به خطاهای عمومی
کلاس پایه FirebaseException
اکنون چندین ویژگی جدید را نشان می دهد:
-
ErrorCode getErrorCode()
: کد خطای پلتفرم مرتبط با استثنا را برمیگرداند. هر نمونه ازFirebaseException
دارای کد خطای پلتفرم غیر تهی تضمین شده است. کدهای خطای پلتفرم احتمالی به عنوانErrorCode
از نوع enum جدید تعریف می شوند. -
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
را ایجاد کنند. APIهای Async (مثلاً متدهایی که یک 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
حذف شده اند. از کلاس 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();