Nouvelle API Google Sign-In

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:

Google Sign-In

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.