🚀 6.4 Autenticação com Google Sign-In
Para acessar a Google Agenda, o primeiro passo é a autenticação segura do usuário. No Android Studio 2023.1, utilizamos o Google Sign-In, que oferece uma experiência fluida e segura sem exigir que o usuário digite sua senha diretamente no seu app.
Configurando as Opções de Login
Através do GoogleSignInOptions, solicitamos as permissões (Escopos) necessárias para ler e gravar eventos na agenda:
private GoogleSignInClient googleSignInClient;
private void configurarGoogleSignIn() {
var gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(CalendarScopes.CALENDAR)) // Escopo da Agenda
.build();
googleSignInClient = GoogleSignIn.getClient(this, gso);
}Iniciando o Fluxo de Login
Utilizamos o ActivityResultLauncher para capturar a resposta do login do Google:
private final var googleSignInLauncher = registerForActivityResult(
new StartActivityForResult(), result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
var task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());
tratarResultadoLogin(task);
}
});
private void iniciarLogin() {
googleSignInLauncher.launch(googleSignInClient.getSignInIntent());
}Tratando o Resultado (Java 17)
private void tratarResultadoLogin(Task<GoogleSignInAccount> completedTask) {
try {
var conta = completedTask.getResult(ApiException.class);
// Login realizado com sucesso!
Log.d("BOAVIAGEM", "Bem-vindo: " + conta.getEmail());
} catch (ApiException e) {
Log.e("BOAVIAGEM", "Erro no login: " + e.getStatusCode());
}
}IMPORTANT
Token de Identificação (ID Token): Para o BoaViagem, o login é apenas o meio de acesso à Agenda. O Google fornece um
GoogleSignInAccountque contém o e-mail e as credenciais necessárias para as próximas etapas de integração.
TIP
No Java 17, o uso de
try-catchcom exceções específicas evartorna o tratamento do fluxo de login muito mais elegante e menos propenso a erros de tipagem.