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 seguros, 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 em uma opção . Essa API pode ser usada no lugar das APIs de Login do Google existentes para fluxos de login.
Use essa API somente quando o usuário mostrar explicitamente a intenção de fazer login com o Google. Por exemplo, use esta API quando eles clicarem no botão "Fazer login com o Google" no seu app.
Não use essa API para solicitar que o usuário faça login na inicialização do app ou resposta a outro acionador, como adicionar um item ao carrinho de compras. Para esses casos de uso, use Login e inscrição com um toque.
Quando você iniciar o fluxo de Login do Google com a nova API, ele exibirá este Interface:
Antes de começar
Configure um projeto do Console de APIs do Google e configure o projeto do Android Studio.
Fazer uma solicitação de login
Para iniciar um fluxo de Login do Google usando a API Identity, crie um
GetSignInRequest
. Em seguida, em uma chamada de objeto SignInClient
getSignInIntent
. Esta chamada é assíncrona e, se for bem-sucedida, fornecerá uma
PendingIntent
para abrir 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
Em onActivityResult
, recupere um SignInCredential
. O SignInCredential
o objeto retornado de getSignInCredentialFromIntent
contém informações
sobre um login válido. Se o usuário não conseguir fazer login por algum motivo, uma
Uma ApiException
é 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, e-mail, e o URL da foto do perfil. Se precisar de mais informações, direcione os usuários em um fluxo completo de informações de perfil.