Os Serviços de Identificação do Google (SIG) são um novo conjunto de APIs que oferece aos usuários login e inscrição fácil e segura, em um pacote fácil de implementar para desenvolvedores. Este documento detalha uma nova API de Login do Google (parte do SIG) que pode ser usada para iniciar o fluxo de login ou inscrição quando um usuário toca no botão "Fazer login com o Google". Essa API pode ser usada no lugar das APIs de Login do Google para fluxos de login.
Use essa API somente quando o usuário mostrar explicitamente que pretende fazer login com o Google. Por exemplo, use essa API quando o usuário clicar no botão "Fazer login com o Google" no app.
Não use essa API para solicitar que o usuário faça login na inicialização do app ou em resposta a outro acionador, como a adição de um item ao carrinho de compras. Nesses casos, use o login e inscrição com um toque.
Quando você iniciar o fluxo do Login do Google com a nova API, ela exibirá esta interface:
Antes de começar
Configure um projeto do Console de APIs do Google e configure seu projeto do Android Studio.
Fazer uma solicitação de login
Para iniciar um fluxo de Login do Google usando a API Identity, crie um
objeto GetSignInRequest
. Em seguida, em um objeto SignInClient
, chame
getSignInIntent
. Essa chamada é assíncrona e, caso seja concluída, vai fornecer um
PendingIntent
para iniciar a caixa de diálogo.
private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */
private void signIn() {
GetSignInIntentRequest request =
GetSignInIntentRequest.builder()
.setServerClientId(getString(R.string.server_client_id))
.build();
Identity.getSignInClient(activity)
.getSignInIntent(request)
.addOnSuccessListener(
result -> {
try {
startIntentSenderForResult(
result.getIntentSender(),
REQUEST_CODE_GOOGLE_SIGN_IN,
/* fillInIntent= */ null,
/* flagsMask= */ 0,
/* flagsValue= */ 0,
/* extraFlags= */ 0,
/* options= */ null);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Google Sign-in failed");
}
})
.addOnFailureListener(
e -> {
Log.e(TAG, "Google Sign-in failed", e);
});
}
Processar resultados de login
No onActivityResult
, recupere um SignInCredential
. O objeto SignInCredential
retornado de getSignInCredentialFromIntent
contém informações
sobre um login válido. Se o usuário não fizer login por algum motivo, uma
ApiException
será gerada.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
try {
SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
// Signed in successfully - show authenticated UI
updateUI(credential);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
}
}
}
}
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});
O resultado de um login bem-sucedido sempre retorna o nome completo, o e-mail e o URL da foto do perfil do usuário. Se precisar de mais informações, direcione os usuários a um fluxo completo de informações de perfil.