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ştirmelerdir.

Genel hata işleme değişiklikleri

FirebaseException temel sınıfı artık çeşitli yeni özellikleri kullanıma sunuyor:

  • ErrorCode getErrorCode(): İstisnayla ilişkili platform hata kodunu döndürür. FirebaseException öğesinin her örneğinde platform hata kodu kesinlikle boş olmayan bir değerdir. 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 boş olabilir.

Daha önce olduğu gibi, SDK'da tanımlanan diğer birçok istisna türü (ö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 örnekleri oluşturabilir. 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ğramaya özgü hata kodları, yeni enum türünde AuthErrorCode herkese açık olarak tanımlanır.

Önce (<= 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 öğesine ek olarak kullanılır. Gerekirse her iki hata kodunu da inceleyen hata işleme mantığı uygulayabilirsiniz.

FCM hata işleme değişiklikleri

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

Önce (<= 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 hata işleme mantığı uygulayabilirsiniz.

Authentication özel hak talepleri

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

Önce (<= v6.15.0)

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

Şimdi (>= v7.0.0)

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

FCM bildirim oluşturucular

Notification sınıfının kullanımdan kaldırılan oluşturucuları kaldırıldı. Yeni örnekler oluşturmak için Notification.Builder sınıfını kullanın.

Önce (<= 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();