Java Admin SDK v7'ye geçiş

Java için Firebase Admin SDK'sının 7.0.0 sürümünde, API'de bazı önemli değişiklikler yapılmıştır. Bu sürümdeki API değişiklikleri, öncelikle Authentication ve FCM için hata işlemeyle ilgili eklemeler ve iyileştirmelerden oluşur.

Genel hata işleme değişiklikleri

FirebaseException temel sınıfı artık birkaç yeni özellik sunuyor:

  • ErrorCode getErrorCode(): İstisnayla ilişkili platform hata kodunu döndürür. FirebaseException türünün her örneğinin null olmayan bir platform hata koduna sahip olması garanti edilir. Olası platform hata kodları, yeni bir enum türü ErrorCode olarak tanımlanır.
  • IncomingHttpResponse getHttpResponse(): İstisnayla ilişkili HTTP yanıtını döndürür. İstisna, arka uç HTTP yanıtı dışında bir nedenden kaynaklanıyorsa null olabilir.

Daha önce olduğu gibi, SDK'da tanımlanan diğer istisna türlerinin çoğu (ör. FirebaseAuthException, FirebaseMessagingException), FirebaseException temel sınıfından türetilir.

Kimlik doğrulama hatası işleme değişiklikleri

FirebaseAuth sınıfındaki tüm API'ler FirebaseAuthException örneklerini gönderebilir. Eşzamansız API'ler (örneğin, ApiFuture döndüren yöntemler), FirebaseAuthException sarmalayan bir ExecutionException ile başarısız olabilir. Kimlik doğrulamaya özgü hata kodları, yeni enum türü AuthErrorCode'te herkese açık olarak tanımlanır.

Önceki sürümler (<= 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");
  }
}

Şimdi (>= 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, temel FirebaseException türünden devralınan ErrorCode'a ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen bir hata işleme mantığı uygulayabilirsiniz.

Değişiklikler işlenirken FCM hata oluştu

FirebaseMessaging sınıfındaki tüm API'ler FirebaseMessagingException örnekleri atabilir. Eşzamansız API'ler (örneğin, ApiFuture döndüren yöntemler), FirebaseMessagingException sarmalayan bir ExecutionException ile başarısız olabilir. Authentication'ye özgü hata kodları, yeni enum türü MessagingErrorCode'te herkese açık olarak tanımlanır.

Önceki sürümler (<= 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");
  }
}

Şimdi (>= 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, temel FirebaseException türünden devralınan ErrorCode'a ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen bir hata işleme mantığı uygulayabilirsiniz.

Authentication özel hak talebi

Desteği sonlandırılan FirebaseAuth.setCustomClaims() yöntemi kaldırıldı. Bunun yerine FirebaseAuth.setCustomUserClaims() özelliğini kullanın.

Önceki sürümler (<= v6.15.0)

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

Şimdi (>= v7.0.0)

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

FCM bildirim oluşturucu

Notification sınıfının desteği sonlandırılmış oluşturucuları kaldırıldı. Yeni örnekler oluşturmak için Notification.Builder sınıfını kullanın.

Önceki sürümler (<= v6.15.0)

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

Şimdi (>= v7.0.0)

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