Acerca de este codelab
1. Descripción general
En este codelab, crearemos una página web sencilla para que los usuarios accedan. Usarás la biblioteca de JavaScript de Google Identity Services para mostrar y personalizar el botón Acceder con Google.
Qué aprenderás
- Cómo agregar un botón de Acceder con Google a una página web
- Cómo configurar una aplicación web de OAuth 2.0
- Cómo decodificar un token de ID
- Cómo personalizar el botón Acceder con Google
Requisitos
- Un editor de texto y lugar para alojar una página web. Los entornos que abordaremos en este codelab son los siguientes:
- que se ejecute localmente en una terminal en tu máquina
- con una plataforma como Glitch.
- Un proyecto de Google Cloud, Puedes usar el proyecto existente o crear uno nuevo. Una cuenta y un proyecto de Google Cloud Platform son gratuitos.
- Conocimientos básicos de HTML, CSS, JavaScript y Herramientas para desarrolladores de Chrome (o una herramienta equivalente)
¡Empecemos!
2. Crea tu página de acceso
Agrega esta muestra de código en un archivo llamado index.html
. Puedes hacerlo en tu máquina con tu editor de texto favorito o en una plataforma como Glitch.
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://accounts.google.com/gsi/client" async></script>
<script>
function decodeJWT(token) {
let base64Url = token.split(".")[1];
let base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
let jsonPayload = decodeURIComponent(
atob(base64)
.split("")
.map(function (c) {
return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
})
.join("")
);
return JSON.parse(jsonPayload);
}
function handleCredentialResponse(response) {
console.log("Encoded JWT ID token: " + response.credential);
const responsePayload = decodeJWT(response.credential);
console.log("Decoded JWT ID token fields:");
console.log(" Full Name: " + responsePayload.name);
console.log(" Given Name: " + responsePayload.given_name);
console.log(" Family Name: " + responsePayload.family_name);
console.log(" Unique ID: " + responsePayload.sub);
console.log(" Profile image URL: " + responsePayload.picture);
console.log(" Email: " + responsePayload.email);
}
</script>
</head>
<body>
<!-- g_id_onload contains Google Identity Services settings -->
<div
id="g_id_onload"
data-auto_prompt="false"
data-callback="handleCredentialResponse"
data-client_id="PUT_YOUR_WEB_CLIENT_ID_HERE"
></div>
<!-- g_id_signin places the button on a page and supports customization -->
<div class="g_id_signin"></div>
</body>
</html>
Este código es una combinación de HTML y JavaScript, y realiza varias acciones:
- configura esta biblioteca de Google Identity Services con
g_id_onload
, - muestre un botón de Acceder con Google con
g_id_signin
- Agrega un controlador de función de devolución de llamada de JavaScript llamado
handleCredentialResponse
para recibir la credencial de acceso del usuario desde Google. - Una función
decodeJWT
para convertir la credencial de token web JSON (JWT) en un JSON sin formato
Algo puede parecer extraño con data-client_id="PUT_YOUR_WEB_CLIENT_ID_HERE"
.
Por ahora, ignóralo; volveremos a él en un momento.
3. Publica tu página web
Hablaremos sobre dos entornos para entregar index.html
al navegador:
- ejecutar un servidor web de manera local en tu máquina
- una plataforma remota como Glitch.
Elige la que te resulte más conveniente. Después de la configuración, usaremos la URL para configurar un cliente web de OAuth.
De forma local desde tu máquina
Asegúrate de que Python3 esté instalado en tu sistema. La configuración difiere según el SO y la plataforma. Comienza con Configuración y uso de Python si necesitas instalar Python en tu máquina.
Inicia el servidor web de Python en el directorio que contiene index.html
:
$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Un servidor web está detectando conexiones en el puerto 8000 y listo para entregar tu página de acceso. La URL es
http://localhost:8000
Usa una plataforma remota
Si decidiste editar y alojar tu página de acceso con Glitch (o una herramienta equivalente), deberías poder abrir index.html
en un panel de vista previa o en una nueva pestaña del navegador.
Por lo general, la URL que utilizarás es el nombre del proyecto que ingresaste cuando configuraste el proyecto glich.com. Por ejemplo, si tu proyecto de falla se llama gis-example
, la URL es https://gis-example.glitch.me
. Por supuesto, habrás elegido un nombre de proyecto diferente y no puedes volver a usar este. La URL es
https://<var>your-project-name</var>.glitch.me
Cargar la página
Espera un momento...
Primero, tenemos que crear un cliente web de OAuth 2.0 y configurarlo.
Copia o toma nota de la URL, ya que la usarás en el siguiente paso.
4. Configura un cliente web de OAuth
Configuremos OAuth para que las personas realmente puedan acceder.
- Haz clic en este vínculo para crear un cliente web de OAuth 2.0. Si es necesario, un asistente te ayudará a crear y configurar un proyecto de Google Cloud nuevo.
- Selecciona Aplicación web del menú desplegable Tipo de aplicación.
- Presiona el botón Agregar URI en Orígenes autorizados de JavaScript.
- Ingresa la URL que aloja
index.html
del Paso 3: Publica tu página web.Se aloja en tu máquina local.
Se aloja en una plataforma remota
- Presiona Crear.
- Copia el nuevo ID de cliente.
Otro elemento
Debemos volver y actualizar index.html
para usar el nuevo ID de cliente. En tu editor, reemplaza PUT_YOUR_WEB_CLIENT_ID_HERE
por tu nuevo ID de cliente. Un ID de cliente se parece al siguiente ejemplo: 1234567890-abc123def456.apps.googleusercontent.com
.
Iniciemos sesión.
5. Acceder
Primero, abre la consola para desarrolladores de tu navegador. Los errores y la credencial de token del ID de JWT que muestre Google se registrarán aquí.
Presiona el botón Acceder con Google.
Lo que sucede a continuación puede variar un poco:
- Si accediste a más de una Cuenta de Google, se te pedirá que selecciones la cuenta que usarás para acceder a esta aplicación web.
- Si es la primera vez que accedes a esta aplicación web, se mostrará un mensaje de solicitud de consentimiento.
Después de seleccionar una cuenta y dar tu consentimiento de manera opcional, Google responde con un JWT. La función de devolución de llamada handleCredentialResponse
que se ejecuta en el navegador recibe el JWT.
En este codelab, decodificamos e imprimimos el contenido de JWT. En una app web de producción, verificarás y usarás el JWT decodificado para hacer algo más significativo, como crear una cuenta nueva en tu plataforma de backend o establecer una sesión nueva para el usuario.
6. Inspecciona el token de ID de JWT
El JWT codificado se registra en la consola para desarrolladores. Después de decodificar el JWT, algunos campos de token de ID de uso general también se registran en la consola.
Puedes usar herramientas en línea como jwt.io para decodificar el JWT.
Como alternativa, también se puede usar jq
en tu terminal para decodificar y ver el JWT (es posible que debas usar el administrador de paquetes para instalar jq). Primero, pega la cadena JWT codificada entre comillas dobles:
$ JWT="eyJhbGciOiJSUzI1Ni ... Hecz6Wm4Q"
y, luego, usar este comando para decodificarlo
$ echo $JWT | jq -R 'split(".") | .[0],.[1] | @base64d | fromjson'
{
"alg": "RS256",
"kid": "c7e04465649ffa606557650c7e65f0a87ae00fe8",
"typ": "JWT"
}
{
"iss": "https://accounts.google.com",
"azp": "123456789012-s0meRand0mStR1nG.apps.googleusercontent.com",
"aud": "123456789012-s0meRand0mStR1nG.apps.googleusercontent.com",
"sub": "2718281828459045",
"email": "example@example.com",
"email_verified": true,
"nbf": 1744645148,
"name": "Brian Daugherty",
"picture": "https://lh3.googleusercontent.com/a/08a898b88ca4d6407be652d8",
"given_name": "Brian",
"family_name": "Daugherty",
"iat": 1744645448,
"exp": 1744649048,
"jti": "52cd32984b30e178aa88bc2e75e63e055a461fcf"
}
Algunas claves y valores, como el correo electrónico, el nombre y la foto, deberían ser bastante fáciles de entender. Se usan otros valores para verificar el JWT antes de usarlo. En Obtener información del usuario a partir del token de ID, encontrarás más información sobre el significado de todos los campos.
7. Personaliza el botón
Si colocas un botón de acceso predeterminado en una página, esto se hace de la siguiente manera:
<div class="g_id_signin"></div>
y verás este botón
Sin embargo, tal vez quieras cambiar el color, el tamaño o el texto para que combine con el tema de tu sitio.
Cambia el color del botón a azul y di Regístrate con Google.
Abre index.html
, busca el elemento g_id_signin
y agrega los atributos data-theme="filled_blue"
y data-text="signup_with"
:
<div
class="g_id_signin"
data-theme="filled_blue"
data-text="signup_with"
></div>
Después de guardar y volver a cargar la página, verás un botón azul con el texto nuevo.
Puedes personalizar aún más el botón. Consulta Atributos de datos visuales para obtener la lista completa de opciones.
8. Recursos adicionales
¡Felicitaciones!
Agregaste un botón de Acceder con Google a una página web, configuraste un cliente web de OAuth 2.0, decodificaste un token de ID de JWT y aprendiste a personalizar el aspecto del botón.
Estos vínculos pueden ayudarte con los próximos pasos:
- API de HTML de Google Identity Services
- API de JavaScript de Google Identity Services
- Cómo configurar Acceder con Google para la Web
- Cómo verificar un token de ID de Google
- Obtén más información sobre los proyectos de Google Cloud aquí.
- Métodos de autenticación de Google Identity