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) { // ... } } } // ... }