S'authentifier auprès d'un backend à l'aide de jetons d'identification

Le client de connexion One Tap récupère un jeton d'ID Google lorsque l'utilisateur sélectionne un compte Google. Un jeton d'identité est une assertion signée de l'identité d'un utilisateur qui contient également ses informations de profil de base, y compris éventuellement une adresse e-mail validée par Google.

Lorsque les jetons d'ID sont disponibles, vous pouvez les utiliser pour vous authentifier de manière sécurisée avec le backend de votre application ou pour enregistrer automatiquement l'utilisateur dans un nouveau compte sans avoir à valider son adresse e-mail.

Pour connecter ou enregistrer un utilisateur avec un jeton d'ID, envoyez-le au backend de votre application. Sur le backend, vérifiez le jeton à l'aide d'une bibliothèque cliente d'API Google ou d'une bibliothèque JWT à usage général. Si l'utilisateur ne s'est jamais connecté à votre application avec ce compte Google, créez-en un.

Si vous avez choisi d'utiliser un nonce pour éviter les attaques par rejeu, utilisez getNonce pour l'envoyer avec le jeton d'identification à votre serveur backend, puis vérifiez la valeur attendue. Nous vous recommandons vivement d'utiliser un nonce pour améliorer la sécurité des utilisateurs.

Obtenir un jeton d'ID à partir de l'objet d'identifiants

Après avoir récupéré les identifiants d'un utilisateur, vérifiez si l'objet d'identifiants inclut un jeton d'ID. Si c'est le cas, envoyez-le à votre backend.

Java

public class YourActivity extends AppCompatActivity {

  // ...
  private static final int REQ_ONE_TAP = 2;  // Can be any integer unique to the Activity.
  private boolean showOneTapUI = true;
  // ...

  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      super.onActivityResult(requestCode, resultCode, data);

      switch (requestCode) {
          case REQ_ONE_TAP:
              try {
                  SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data);
                  String idToken = credential.getGoogleIdToken();
                  if (idToken !=  null) {
                      // Got an ID token from Google. Use it to authenticate
                      // with your backend.
                      Log.d(TAG, "Got ID token.");
                  }
              } catch (ApiException e) {
                  // ...
              }
              break;
      }
  }
}

Kotlin

class YourActivity : AppCompatActivity() {

    // ...
    private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity
    private var showOneTapUI = true
    // ...

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (requestCode) {
             REQ_ONE_TAP -> {
                try {
                    val credential = oneTapClient.getSignInCredentialFromIntent(data)
                    val idToken = credential.googleIdToken
                    when {
                        idToken != null -> {
                            // Got an ID token from Google. Use it to authenticate
                            // with your backend.
                            Log.d(TAG, "Got ID token.")
                        }
                        else -> {
                            // Shouldn't happen.
                            Log.d(TAG, "No ID token!")
                        }
                    }
                } catch (e: ApiException) {
                    // ...
            }
        }
    }
    // ...
}