A versão 7.0.0 do SDK Admin do Firebase para Java introduz algumas alterações importantes na API. Basicamente, as alterações de API nessa versão são adições e melhorias no tratamento de erros para Authentication e FCM.
Alterações gerais no tratamento de erros
Agora, a classe base FirebaseException
expõe vários novos atributos:
ErrorCode getErrorCode()
: retorna o código de erro da plataforma associado à exceção. Todas as instâncias deFirebaseException
têm um código de erro de plataforma não nulo. Os possíveis códigos de erro da plataforma são definidos como um novo tipo de enumErrorCode
.IncomingHttpResponse getHttpResponse()
: retorna a resposta HTTP associada à exceção. Poderá ser nula se a exceção for causada por um motivo diferente de uma resposta HTTP de back-end.
Como antes, a maioria dos outros tipos de exceção definidos no SDK (por exemplo,
FirebaseAuthException
e FirebaseMessagingException
) são derivadas da classe base
FirebaseException
.
Alterações no tratamento de erros de autenticação
Todas as APIs na classe FirebaseAuth
podem gerar instâncias de
FirebaseAuthException
. APIs assíncronas (por exemplo, métodos que retornam
ApiFuture
) podem falhar com um ExecutionException
que encapsula um
FirebaseAuthException
. Os códigos de erro específicos do Auth são definidos publicamente
no novo tipo de enum AuthErrorCode
.
Antes (<= 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");
}
}
Hoje (>= 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");
}
}
O AuthErrorCode
é adicionado ao ErrorCode
herdado do tipo base
FirebaseException
. É possível implementar a lógica de tratamento de erros que inspeciona
os dois códigos de erro, se necessário.
Alterações no tratamento de erros FCM
Todas as APIs na classe FirebaseMessaging
podem gerar instâncias de
FirebaseMessagingException
. APIs assíncronas (por exemplo, métodos que retornam
ApiFuture
) podem falhar com um ExecutionException
que encapsula um
FirebaseMessagingException
. Os códigos de erro específicos do Authentication são definidos publicamente
no novo tipo enumerado MessagingErrorCode
.
Antes (<= 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");
}
}
Hoje (>= 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");
}
}
O MessagingErrorCode
é adicionado ao ErrorCode
herdado do
tipo base FirebaseException
. É possível implementar a lógica de tratamento de erros que
inspeciona os dois códigos de erro, se necessário.
Declarações personalizadas do Authentication
O método FirebaseAuth.setCustomClaims()
obsoleto foi removido. Use o
FirebaseAuth.setCustomUserClaims()
, como alternativa.
Antes (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Hoje (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Construtores de notificação do FCM
Os construtores obsoletos da classe Notification
foram removidos. Use
a classe Notification.Builder
para criar novas instâncias.
Antes (<= v6.15.0)
Notification notification = new Notification(title, body, url);
Hoje (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();