MENUMENU
    • Cursos
      • Programación y Desarrollo
        • Desarrollo Front End
          • Desarrollo Web
          • JavaScript
          • React Js
        • Desarrollo Back End
          • Node.Js
          • MongoDB
      • Marketing Digital
        • Community Manager
          • Marketing de contenidos
          • Branding
          • Diseño de contenidos
          • Copywriting
          • Análisis de métricas
        • Publicidad Online
          • Google Analytics
          • Google Ads
          • Facebook Ads
          • Email Marketing
          • SEO - Posicionamiento web
          • Inbound Marketing
          • Growth Marketing
      • Microsoft Excel
        • Excel Básico
        • Excel Avanzado
    • Carreras
      • Programación y Desarrollo
        • Carrera de Desarrollo Full Stack
        • Carrera de Desarrollo Frontend
        • Carrera de Desarrollo Front End React
        • Carrera de Desarrollo Backend
      • Marketing Digital
        • Carrera de Marketing Digital
        • Carrera de Community Manager
        • Carrera de Publicidad Online
      • Microsoft Excel
        • Carrera de Excel Experto
    • Webinars
    • Blog
    • Empresas
CAMPUS VIRTUAL
Digital Bluee
    MENUMENU
    • Cursos
      • Programación y Desarrollo
        • Desarrollo Front End
          • Desarrollo Web
          • JavaScript
          • React Js
        • Desarrollo Back End
          • Node.Js
          • MongoDB
      • Marketing Digital
        • Community Manager
          • Marketing de contenidos
          • Branding
          • Diseño de contenidos
          • Copywriting
          • Análisis de métricas
        • Publicidad Online
          • Google Analytics
          • Google Ads
          • Facebook Ads
          • Email Marketing
          • SEO - Posicionamiento web
          • Inbound Marketing
          • Growth Marketing
      • Microsoft Excel
        • Excel Básico
        • Excel Avanzado
    • Carreras
      • Programación y Desarrollo
        • Carrera de Desarrollo Full Stack
        • Carrera de Desarrollo Frontend
        • Carrera de Desarrollo Front End React
        • Carrera de Desarrollo Backend
      • Marketing Digital
        • Carrera de Marketing Digital
        • Carrera de Community Manager
        • Carrera de Publicidad Online
      • Microsoft Excel
        • Carrera de Excel Experto
    • Webinars
    • Blog
    • Empresas

Interés general

Cómo implementar Google One Tap

  • Categorías Interés general, Programación
  • Fecha 06/03/2023

De seguro que muchas veces te has encontrado con esta ventana modal:

Ejemplo de cómo se ve Google One Tap
  • Con ésta puedes iniciar sesión con un sólo clic.
  • Y se conoce como Google One Tap.

¿Te gustaría agregar Google One Tap a tu proyecto web?

Veamos cómo puedes conseguirlo siguiendo 3 simples pasos.

Paso 1: Agrega Google One Tap a tu vista

Debes agregar la siguiente etiqueta div a tu página, junto al script de Google One Tap.

@guest
<div id="g_id_onload"
     data-client_id="{{ env('GOOGLE_CLIENT_ID') }}"
     data-login_uri="{{ route('login.google') }}"
     data-cancel_on_tap_outside="false">
</div>
<script src="https://accounts.google.com/gsi/client" async defer></script>
@endguest

Ten en cuenta que el modal debe mostrarse sólo a usuarios que no han iniciado sesión.

No tiene sentido mostrar Google One Tap a usuarios que ya se encuentran autenticados, ¿verdad?

Si estás usando Laravel, puedes lograr ello con Las directivas Blade @guest y @endguest.

Para que este código funcione es importante:

  • Definir una variable de entorno llamada GOOGLE_CLIENT_ID (si no cuentas con estas credenciales, puedes luego revisar la sección final de este artículo).
  • Definir una ruta POST para atender el request de Google One Tap.

Por otro lado:

  • El atributo data-cancel_on_tap_outside es opcional.
  • Por defecto su valor es true.
  • Y significa que la ventana se cerrará al hacer tap fuera de ella.
  • En este caso, no quiero que se cierre, por tanto le asigno el valor false.

Paso 2: Verifica los token en tu backend

La idea es verificar tanto el token CSRF generado para el usuario, así como su token ID, luego que el usuario hace tap.

Para esto debemos crear un controlador, y una ruta POST encargada atender la petición generada por Google One Tap.

Así puedes definir tu ruta, por ejemplo:

Route::post('/login/google', [GoogleSignInController::class, 'login'])->name('login.google');

Paso 3: Registro e inicio de sesión

La idea es:

  • Crear un usuario nuevo si aún no existe, e inmediatamente iniciar sesión con este usuario.
  • O bien, simplemente iniciar sesión con un usuario que ya se encuentra registrado.

Esto es muy sencillo de lograr.

Si estás usando Laravel, el código quedaría de la sigueinte manera:

public function login(Request $request)
{
    if ($_COOKIE['g_csrf_token'] !== $request->input('g_csrf_token')) {
        // Invalid CSRF token
        return back();
    }
    
    $idToken = $request->input('credential'); 
        
    $client = new Google_Client([
        'client_id' => env('GOOGLE_CLIENT_ID')
    ]);
    
    $payload = $client->verifyIdToken($idToken);
    
    if (!$payload) {
        // Invalid ID token
        return back();
    }
        
    $user = User::firstOrCreate([
        'email' => $payload['email']
    ], [
        'name' => $payload['name'],
        'password' => null,
        'image' => $payload['picture'],
        'google_user_id' => $payload['sub']
    ]);

    // ...
            
    auth()->login($user);
    
    return back();
}

Nótese que:

  • El token CSRF se valida comparando el valor almacenado en cookies con el valor enviado a través de la petición POST.
  • El token ID se valida haciendo uso de la Google API Client Library.

Si estás usando PHP, puedes instalar la biblioteca oficial de Google a través de Composer:

composer require google/apiclient

Gracias a la biblioteca:

  • Puedes usar el método verifyIdToken para validar el ID token que llega a través del campo credential.
  • Obtenemos un arreglo $payload en caso que el token sea válido.
  • Éste payload contiene la información del usuario.

Importante: $payload['sub'] representa el google user id del usuario que hizo tap.

Cómo obtener tus credenciales

Si no dispones de credenciales para Google One Tap, puedes obtenerlas fácilmente con los pasos siguientes.

Crea un proyecto en Google Cloud

Es importante que crees un proyecto de Google Cloud.

A menos que ya cuentes con uno. Si es así, simplemente selecciónalo:

Crea un proyecto nuevo en Google Cloud

Crea un cliente de OAuth

Lo siguiente es crear un cliente de OAuth.

Para esto simplemente debes ir a Credentials y hacer clic en Create credentials:

Crea credenciales sobre tu proyecto

Y seleccionar la opción OAuth client ID:

Cómo crear un cliente de OAuth

Entonces te aparecerá un formulario, sobre el cuál debes completar toda la información sobre tu proyecto web.

Tras ello, te aparecerá un mensaje con tus credenciales:

Creación exitosa de un nuevo cliente de OAuth

Proceso de verificación

Te recomiendo crear 2 clientes de OAuth.

Así podrás usar uno para tus pruebas de manera local, y otro para producción.

Esto es importante ya que cada cliente de OAuth tiene una lista de dominios admitidos.

Por ejemplo, yo he creado 2 clientes de OAuth, cada uno asociado a estos dominios:

  • programacionymas.com para producción
  • programacionymas.test.com para desarrollo

Gracias a que están separados puedo verificar el primero, y continuar usando el segundo de manera local.

Para que Google One Tap esté disponible en tu sitio web de producción, Google te exige verificar la pantalla de consentimiento de OAuth.

Para esto simplemente debes completar los datos de tu sitio web, y enviar el formulario para su revisión.

Si todo es correcto, pronto verás el estado como verificado:

Pantalla de consentimiento de OAuth
Carrera de programacion

Etiqueta:cursos online, HTML, JAVASCRIPT, Lenguajes de programación, PHYTON, STACK OVERFLOW, TIOBE

author avatar
Juan Cruz Darocha

Publicación anterior

¿Qué es la barra de estado en Excel?
06/03/2023

Siguiente publicación

Chatbot: ¿Qué es y cómo implementarlo?
13/03/2023

Entradas recientes

  • Tendencias en Desarrollo Frontend para 2025 31/03/2025
  • Programadores de React: El Perfil Más Buscado por las Empresas Tecnológicas 30/03/2025
  • MongoDB: La Base de Datos NoSQL que Revoluciona el Almacenamiento de Datos 29/03/2025
  • ¿Cuánto gana un desarrollador en la Argentina?: estos son los sueldos que se pagan en el sector 28/03/2025
  • Futuro y beneficios de la IA para programar 27/03/2025

CURSOS

  • Todos los cursos

EVENTOS

  • Webinars

Cursos gratuitos

  • Curso de Introducción al Desarrollo Web
  • Curso de Introducción al Marketing Digital

SOPORTE

  • Terminos y Condiciones
  • Plataforma

Nuestras redes