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 del perfil del usuario, posiblemente una dirección de correo electrónico que Google verificó.

Cuando los tokens de ID estén disponibles, podrás 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ía el token 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, de manera opcional, elegiste usar un nonce para evitar ataques de repetició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 de los usuarios.

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 es así, 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) {
                    // ...
            }
        }
    }
    // ...
}