Autentica con un backend mediante tokens de ID

El cliente de acceso con One Tap recupera un token de ID de Google cuando el usuario selecciona una Cuenta de Google. Un token de ID es una aserción firmada de la identidad de un usuario que también contiene información básica de su perfil, que puede incluir una dirección de correo electrónico verificada por Google.

Cuando los tokens de ID están disponibles, puedes usarlos para autenticarte de forma segura con el backend de tu app o para registrar automáticamente al usuario en una cuenta nueva sin necesidad de verificar su dirección de correo electrónico.

Para que un usuario acceda o se registre con un token de ID, envíalo al backend de tu app. En el backend, verifica el token con una biblioteca cliente de la API de Google o una biblioteca JWT de uso general. Si el usuario no accedió a tu app con esta Cuenta de Google antes, crea una cuenta nueva.

Si elegiste usar un nonce para evitar ataques de reproducción, usa getNonce para enviarlo junto con el token de ID a tu servidor de backend y verifica el valor esperado. Te recomendamos que consideres usar un nonce para mejorar la seguridad del usuario.

Obtén un token de ID del objeto de credenciales

Después de recuperar las credenciales de un usuario, verifica si el objeto de credenciales incluye un token de ID. Si lo hace, envíalo a tu 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) {
                    // ...
            }
        }
    }
    // ...
}