> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Découvrez comment intégrer Sign In with Google à des applications mobiles natives.

# Ajouter Sign In with Google aux applications Android natives

[Sign in with Google](https://developers.google.com/identity/gsi/web/guides/overview) permet aux utilisateurs de s’authentifier avec un compte Google actif, en leur offrant une expérience de connexion fluide dans votre application. Vous pouvez intégrer cette fonctionnalité à vos applications Android natives à l’aide de Credential Manager pour Android avec Auth0.

Consultez les sections ci-dessous pour en savoir plus sur les étapes et les méthodes nécessaires pour configurer Sign in with Google.

<div id="how-it-works">
  ## Fonctionnement
</div>

Cette fonctionnalité utilise le Credential Manager d’Android pour faciliter Sign in with Google dans votre application Android protégée par Auth0. Les étapes ci-dessous illustrent le flux général suivi par l’utilisateur pour Sign in with Google.

<Frame>
  <img src="https://mintcdn.com/translations/6GE5Z24GDCZehiJ9/docs/images/cdy7uua7fh8z/6WofMhOOH7GU0NwEcyebiZ/4d4adcb20b74215c7026c1bc9c95be6c/Google_Sign_In_diagram.png?fit=max&auto=format&n=6GE5Z24GDCZehiJ9&q=85&s=d3062e551fc414cd920b510a1b33c530" alt="" width="3884" height="2351" data-path="docs/images/cdy7uua7fh8z/6WofMhOOH7GU0NwEcyebiZ/4d4adcb20b74215c7026c1bc9c95be6c/Google_Sign_In_diagram.png" />
</Frame>

1. L’utilisateur ouvre votre application Android et choisit de se connecter avec Google.
2. Votre application Android utilise le Credential Manager pour demander Sign in with Google.
3. À l’étape de sélection du compte, l’utilisateur choisit le compte Google de son choix.
4. Google connecte l’utilisateur localement et gère toute l’authentication.
5. L’utilisateur termine la connexion sans aucune interaction supplémentaire.
6. Google renvoie un `id_token` à votre application Android.
7. Votre application Android envoie le `id_token` à votre tenant Auth0 pour validation. Auth0 valide le `client_id` du `id_token` par rapport au `client_id` de la connexion sociale Google configurée dans votre tenant.
8. Le serveur Auth0 renvoie un `access_token` à votre application Android.

<div id="before-you-begin">
  ## Avant de commencer
</div>

Avant de commencer à configurer Sign in with Google, assurez-vous que les conditions suivantes sont remplies :

* Une [connexion sociale Google](https://marketplace.auth0.com/integrations/google-social-connection) a été configurée dans votre tenant Auth0.
  * Pour le paramètre **Purpose**, activez la connexion pour l’authentification, les comptes connectés pour Token Vault, ou les deux. Pour en savoir plus, consultez [Authentification de l’utilisateur vs comptes connectés](/docs/fr-ca/secure/tokens/token-vault/connected-accounts-for-token-vault#user-authentication-vs-connected-accounts).
* Sign in with Google a été ajouté à votre application Android à l’aide du [Credential Manager d’Android](https://developer.android.com/identity/sign-in/credential-manager-siwg).

<div id="configuring-sign-in-with-google-for-android-applications">
  ## Configurer Sign in with Google pour les applications Android
</div>

La configuration de Sign in with Google comprend trois grandes étapes :

1. Créer des identifiants dans Google Cloud Console.
2. Configurer les détails de l’application dans Auth0.
3. Mettre à jour le code de votre application Android.

Les sections ci-dessous fournissent des précisions techniques sur chacune de ces étapes.

<div id="create-credentials-in-the-google-cloud-console">
  ### Créer des identifiants dans la Google Cloud Console
</div>

Pour commencer, vous devez d’abord configurer les éléments suivants dans votre Google Cloud Console :

1. Créez un identifiant OAuth 2.0 de type `Android`. Il est appelé `client_id_native`.
2. Ajoutez le hachage SHA1 de l’application native au client Android de l’étape 1.

   * À l’heure actuelle, Google ne prend en charge que SHA1.
3. Créez un client OAuth Web supplémentaire (`client_id_web`).

   * Dans certains cas, vous avez peut-être déjà configuré cet élément pour vos connexions sociales qui prennent en charge Sign in with Google sur le Web.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous ne pouvez pas utiliser Google Credential Manager avec le `client_id` Android, sinon une erreur se produira. Dans l’ID Token renvoyé par Google, la partie autorisée (`azp`) correspond automatiquement au Client ID OAuth Android, et l’audience (`aud`) correspond au Client ID OAuth Web.

  Lorsque vous utilisez le Credentials Manager à partir d’Android, l’application native doit utiliser `client_id_web` au moyen de `.setServerClientId` dans le SDK Credentials Manager. `client_id_web` correspond à l’identifiant OAuth 2 de type Web Application dans la Google Cloud Console, et il est configuré dans la connexion sociale Google OAuth2. Pour en savoir plus, consultez la [documentation de Google](https://developer.android.com/training/sign-in/credential-manager).
</Callout>

<div id="configure-auth0">
  ### Configurer Auth0
</div>

Le flux Sign in with Google repose sur le <Tooltip tip="OAuth 2.0: Framework d’autorisation qui définit les protocoles et les workflows d’autorisation." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> Token Exchange, qui s’effectue entre Auth0 et votre application Android.

Après avoir créé vos identifiants dans la Google Cloud Console, vous pouvez activer Sign in with Google à l’aide du Credential Manager pour Android. Pour ce faire, mettez à jour votre application au moyen de l’<Tooltip tip="Auth0 Dashboard: Produit principal d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> ou de la <Tooltip tip="Management API: Produit permettant aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Management+API">Management API</Tooltip>.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour mettre à jour l’application dans l’Auth0 Dashboard, suivez les étapes ci-dessous :

    1. Accédez à [Applications > Applications](https://manage.auth0.com/#/applications) et choisissez votre application Android native.
    2. Dans l’onglet **Settings**, développez la section **Advanced Settings**.
    3. Sélectionnez l’onglet **Device Settings** et activez le paramètre **Enable Sign in with Google (Android 4.4+) using Credentials Manager**.
    4. **Pour les nouvelles applications** : dans l’onglet Device Settings, remplissez les champs de la section **Android**, y compris **App Package Name**. Pour en savoir plus, consultez [Enable Android App Links Support](/docs/fr-ca/get-started/applications/enable-android-app-links-support).
    5. Sélectionnez **Save Changes**.
  </Tab>

  <Tab title="Management API">
    Pour mettre à jour votre application au moyen de la Management API, appelez le point de terminaison [Update a client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) comme suit :

    ```json lines theme={null}
    PATCH /api/v2/clients/{id}

    { 
      "native_social_login": { 
        "google": { 
          "enabled": true 
        } 
      },
      "mobile": {
        "android": {
          // Mettez ceci à jour pour qu’il corresponde à l’identifiant du bundle de votre application
          "app_package_name": "com.yoursite.yourapp"
        }
      }
    }
    ```
  </Tab>
</Tabs>

<div id="update-code-in-the-android-application">
  ### Mettre à jour le code dans l’application Android
</div>

L’exemple suivant peut compléter le flux Web utilisé pour les authentifications qui ne passent pas par Google, comme Microsoft, le nom d’utilisateur et mot de passe, ou les fédérations d’entreprise.

```go lines theme={null}
auth0Client.loginWithNativeSocialToken(
  googleCredential.idToken.toString(),
  "http://auth0.com/oauth/token-type/google-id-token")
    .validateClaims()
    .setScope("openid profile email")
    .start(object: Callback < Credentials, AuthenticationException > {
      override fun onFailure(error: AuthenticationException) {
        showSnackBar("Failure a0: $error")

      }

   override fun onSuccess(auth0Creds: Credentials) {
    // Logique pour gérer les identifiants
    }
    })
```

L’obtention de `googleCredential` nécessite que le code de l’application native fasse appel à la bibliothèque Google. Pour en savoir plus, consultez la [documentation de Google sur Credential Manager](https://developer.android.com/training/sign-in/credential-manager).

```go lines expandable theme={null}
// Générer un nonce pour la protection contre la réutilisation de jetons
val randomNonce = UUID.randomUUID().toString()

// Préparer une requête de connexion
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
    // Ceci doit correspondre à l'ID client configuré dans le dashboard auth0
    .setServerClientId(
        getString(R.string.com_google_client_id)
    )
	.setNonce(randomNonce)
    .build()

val request: GetCredentialRequest = GetCredentialRequest.Builder()
    .addCredentialOption(googleIdOption)
    .build()

// Afficher l'invite
val credMan = CredentialManager.create(this@MainActivity.baseContext);
val result = credMan.getCredential(
    request = request,
    context = this@MainActivity.baseContext,
)

// Gérer le résultat 
val creds = result.credential

when (creds) {
    is CustomCredential -> {
        if (creds.type ==
                    GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL
            ) {
                try {
                    val googleCredentials = GoogleIdTokenCredential
                            .createFrom(creds.data)
// Reste du code
```

<div id="additional-authentication-scenarios">
  ## Scénarios d’authentification supplémentaires
</div>

Bien que la mise en œuvre actuelle de Google ne fournisse pas de directives claires concernant la fédération d’entreprise et les demandes de vérification supplémentaires d’<Tooltip tip="Authentification multifacteur (MFA) : processus d’authentification de l’utilisateur qui utilise un facteur en plus du nom d’utilisateur et mot de passe, comme un code envoyé par SMS." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=multi-factor+authentication">authentification multifacteur</Tooltip> (MFA), vous pouvez prendre en charge ces fonctionnalités en passant à l’expérience Web.

<div id="enterprise-federation">
  ### Fédération d’entreprise
</div>

Auth0 prend en charge la fédération d’entreprise, ce qui vous permet de connecter des [fournisseurs d’identité d’entreprise](/docs/fr-ca/authenticate/identity-providers/enterprise-identity-providers) externes (comme Okta Workforce, ADFS ou d’autres systèmes compatibles avec OIDC) à votre tenant Auth0 afin que les utilisateurs puissent ensuite s’authentifier avec leurs identifiants d’entreprise existants.

Si vous devez utiliser la fédération d’entreprise, il est recommandé de rediriger l’utilisateur vers le flux web plutôt que de vous fier au `id_token`, comme illustré dans les exemples précédents.

Pour ce faire, décodez le jeton Google <Tooltip tip="JSON Web Token (JWT) : format standard de jeton d’identité (et souvent de jeton d’accès) utilisé pour représenter des claims de façon sécurisée entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JWT">JWT</Tooltip> et transmettez le `email` fourni dans le <Tooltip tip="JSON Web Token (JWT) : format standard de jeton d’identité (et souvent de jeton d’accès) utilisé pour représenter des claims de façon sécurisée entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+token">ID token</Tooltip> comme `login_hint`. Cela évite à l’utilisateur final d’avoir à saisir de nouveau son adresse courriel dans le flux web.

```go lines theme={null}
if (error.isAccessDenied && reason == "Enterprise Domain") {
WebAuthProvider.login(account)
	.withParameters(mapOf("login_hint" to email))
	.start(...)
}
```

<div id="mfa-considerations-during-token-exchange">
  ### Considérations relatives à la MFA lors de l’échange de jetons
</div>

Auth0 renvoie une erreur à l’application lors de l’échange de jetons lorsque la politique de la connexion Google OAuth exige l’authentification multifacteur. Cette erreur est incluse dans la réponse envoyée à l’application.

Lorsque cette erreur se produit, votre application peut utiliser WebAuth avec le contexte enrichi disponible dans le `id_token` de Google. Dans ce scénario, l’utilisateur final ne verra que l’écran MFA.

```go lines theme={null}
if (error.isMultifactorRequired) {
WebAuthProvider.login(account)
	.withParameters(mapOf(
"login_hint" to email,
"connection" to "google-oauth-2"
))
	.start(...)
}
```
