A versão 7.0.0 do Firebase Admin SDK para Java apresenta algumas mudanças importantes na API. Principalmente, as alterações da API nesta versão são adições e melhorias no tratamento de erros para autenticação e FCM.
Mudanças gerais no tratamento de erros
A classe base FirebaseException
agora expõe vários novos atributos:
-
ErrorCode getErrorCode()
: Retorna o código de erro da plataforma associado à exceção. É garantido que cada instância deFirebaseException
tenha um código de erro de plataforma não nulo. Possíveis códigos de erro de plataforma são definidos como um novo tipo de enumErrorCode
. -
IncomingHttpResponse getHttpResponse()
: Retorna a resposta HTTP associada à exceção. Pode ser nulo se a exceção tiver sido 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
, FirebaseMessagingException
) são derivados da classe base FirebaseException
.
Alterações no tratamento de erros de autenticação
Todas as APIs da classe FirebaseAuth
podem lançar instâncias de FirebaseAuthException
. APIs assíncronas (por exemplo, métodos que retornam um ApiFuture
) podem falhar com um ExecutionException
que agrupa um FirebaseAuthException
. Os códigos de erro específicos do Auth são definidos publicamente no novo tipo de enumeração 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");
}
}
Agora (>= 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
é um acréscimo ao ErrorCode
herdado do tipo base FirebaseException
. Você pode implementar uma lógica de tratamento de erros que inspeciona ambos os códigos de erro, se necessário.
Mudanças no tratamento de erros do FCM
Todas as APIs na classe FirebaseMessaging
podem lançar instâncias de FirebaseMessagingException
. APIs assíncronas (por exemplo, métodos que retornam um ApiFuture
) podem falhar com um ExecutionException
que agrupa um FirebaseMessagingException
. Os códigos de erro específicos da autenticação são definidos publicamente no novo tipo de enumeração 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");
}
}
Agora (>= 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
é um acréscimo ao ErrorCode
herdado do tipo base FirebaseException
. Você pode implementar uma lógica de tratamento de erros que inspeciona ambos os códigos de erro, se necessário.
Declarações personalizadas de autenticação
O método obsoleto FirebaseAuth.setCustomClaims()
foi removido. Use FirebaseAuth.setCustomUserClaims()
em vez disso.
Antes (<= v6.15.0)
FirebaseAuth.getInstance().setCustomClaims(uid, claims);
Agora (>= v7.0.0)
FirebaseAuth.getInstance().setCustomUserClaims(uid, claims);
Construtores de notificação 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);
Agora (>= v7.0.0)
Notification notification = Notification.builder()
.setTitle(title)
.setBody(body)
.setImage(url)
.build();