🚀 6.7 Renovação Automática e Resiliência
No desenvolvimento mobile, a conectividade é incerta e os tokens de acesso expiram rapidamente (geralmente em 1 hora). O Google Play Services remove essa carga do desenvolvedor, gerenciando a renovação automática de tokens em segundo plano.
O Fim do Gerenciamento Manual de Tokens
Diferente do passado, onde precisávamos invalidar e solicitar tokens via AccountManager, o objeto GoogleAccountCredential do GMS detecta automaticamente um token expirado e solicita um novo ao servidor do Google antes de executar a chamada da API.
Silent Sign-In: Experiência Premium
Para que o usuário não precise clicar em “Login” toda vez que abrir o app, utilizamos o Silent Sign-In. Isso recupera a última sessão ativa de forma instantânea e silenciosa:
@Override
protected void onStart() {
super.onStart();
// Tenta recuperar a conta sem interagir com o usuário
GoogleSignIn.silentSignIn()
.addOnCompleteListener(this, task -> {
try {
var conta = task.getResult(ApiException.class);
prosseguirParaDashboard(conta);
} catch (ApiException e) {
// Sessão expirou ou usuário deslogou fora do app
solicitarLoginManual();
}
});
}Tratando Falhas de Rede
Apesar da renovação automática, as requisições podem falhar por falta de internet. Utilize sempre o padrão de Retry ou informe o usuário de forma elegante:
IMPORTANT
User Recoverable Exceptions: Às vezes, o Google precisa que o usuário tome uma ação (ex: trocar a senha). Nestes casos, a API lança uma
UserRecoverableAuthException. O Android fornece umIntentdentro dessa exceção que você deve iniciar para que o usuário resolva o problema na interface do sistema.
TIP
No Java 17, combine o
silentSignIn()comExecutorspara garantir que a verificação de credenciais não cause “stuttering” (engasgos) na animação de abertura do seu aplicativo.