Google Identity Services (GIS) est un nouvel ensemble d'API qui fournit aux utilisateurs une connexion et une inscription sécurisées, le tout dans un package facile à implémenter pour les développeurs. Ce document présente une nouvelle API de connexion Google (qui fait partie des SIG) et permet de lancer le processus de connexion ou d'inscription lorsqu'un utilisateur appuie sur l'option "Se connecter avec Google" ; . Vous pouvez utiliser cette API à la place des API Google Sign-In existantes pour des flux de connexion.
Vous ne devez utiliser cette API que lorsque l'utilisateur indique explicitement qu'il souhaite se connecter avec Google. Par exemple, utilisez cette API lorsqu'ils cliquent sur "Se connecter avec Google" dans votre application.
Vous ne devez pas utiliser cette API pour inviter l'utilisateur à se connecter au lancement de l'application ou à à un autre déclencheur, comme l'ajout d'un article au panier. Pour ces cas d'utilisation, utilisez Connexion et inscription avec One Tap
Lorsque vous lancez le flux Google Sign-In avec la nouvelle API, ce Interface utilisateur:
Avant de commencer
Configurez un projet dans la console Google APIs et votre projet Android Studio.
Envoyer une demande de connexion
Pour lancer un flux Google Sign-In à l'aide de l'API Identity, créez une
GetSignInRequest
. Ensuite, lors d'un appel d'objet SignInClient
,
getSignInIntent
Cet appel est asynchrone. En cas de réussite, il fournit une
PendingIntent
pour ouvrir la boîte de dialogue.
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);
});
}
Gérer les résultats de connexion
Dans onActivityResult
, récupérez un SignInCredential
. SignInCredential
L'objet renvoyé par getSignInCredentialFromIntent
contient des informations
à propos d'une connexion valide. Si, pour une raison quelconque, l'utilisateur ne parvient pas à se connecter,
Une exception ApiException
est générée.
@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
});
Le résultat d'une connexion réussie renvoie toujours le nom complet, l'adresse e-mail de l'utilisateur, et l'URL de la photo de profil. Si vous avez besoin d'informations supplémentaires, vous pouvez rediriger les utilisateurs dans un flux complet d'informations de profil.