Saltar al contenido

Google Configuración de inicio de sesión

En esta guía, aprenderá cómo configurar el inicio de sesión Google con el inicio de sesión social Capgo. Necesitará lo siguiente para configurar Google Iniciar sesión:

  • Una cuenta Google

En esta parte, configurará la pantalla de inicio de sesión que muestra Google.

  1. Vaya a console.cloud.google.com
  2. Haga clic en el selector de proyectos. Google Selector de proyectos de consola
  3. Si aún no tienes un proyecto, crea un proyecto nuevo.
    1. Haga clic en Nuevo proyecto
    2. Asigne un nombre a su proyecto y haga clic en Create. Pantalla de nomenclatura del proyecto que muestra el campo de nombre y el botón Crear
    3. Asegúrese de estar en el proyecto correcto El nombre del proyecto se muestra en el selector, lo que indica la selección correcta del proyecto.
  4. Comience a configurar el OAuth consent screen
    1. Haga clic en la barra de búsqueda

      Google Barra de búsqueda de la consola
    2. Busque OAuth consent screen y haga clic en él.

      Los resultados de la búsqueda muestran la opción de pantalla de consentimiento OAuth
    3. Configurar la pantalla de consentimiento

      Asumiré que estás desarrollando una aplicación abierta al público, por lo que usaré el tipo de usuario external. Seleccione el tipo de usuario que más le convenga Y haga clic en create

      Haga clic en create

      OAuth selección del tipo de usuario de la pantalla de consentimiento con opciones externas e internas
  5. Completa la información sobre tu aplicación.
    1. Comencemos con la “Información de la aplicación”.

      Sección de información de la aplicación que muestra el nombre de la aplicación y los campos de correo electrónico de soporte al usuario
      • Por favor escriba su Nombre de la aplicación :::precaución ESTO SERÁ MOSTRADO A LOS USUARIOS :::
      • Ingrese el correo electrónico de soporte al usuario

        Puede obtener más información sobre el correo electrónico de soporte aquí

      1. PUEDES agregar el logotipo de la aplicación.

        Esto no es obligatorio y me saltaré este paso.

      2. DEBE configurar el Dominio de la aplicación

        Sección de configuración del dominio de la aplicación con campo de dominios autorizados

        No haré eso porque es solo una demostración simple que NO se publicará, pero recomiendo encarecidamente completar esta sección.

      3. TIENES QUE proporcionar el correo electrónico del desarrollador.

        Sección de información de contacto del desarrollador con campo de correo electrónico
      4. Haga clic en guardar y continuar

        Botón Guardar y continuar en la parte inferior del formulario
  6. Configurar los ámbitos
    1. Haga clic en “agregar o eliminar ámbitos”.

      Botón Agregar o eliminar ámbitos en la pantalla de configuración de ámbitos
    2. Seleccione los siguientes ámbitos y haga clic en update

      Cuadro de diálogo de selección de ámbito con ámbitos de correo electrónico y perfil seleccionados
    3. Haga clic en guardar y continuar

      Botón Guardar y continuar en la pantalla de ámbitos
  7. Agregue un usuario de prueba
    1. Haga clic en agregar usuarios Botón Agregar usuarios en la sección de usuarios de prueba
    2. Ingrese su correo electrónico de Google, presione Enter y haga clic en add Campo de correo electrónico y botón Agregar para los usuarios de prueba
    3. Haga clic en guardar y continuar Botón Guardar y continuar en la pantalla de usuarios de prueba
  8. Haga clic en volver al panel Botón Volver al panel en la parte inferior de la página de finalización
  9. Envíe su aplicación para verificación

Diferencias entre acceso online y acceso offline

Section titled “Diferencias entre acceso online y acceso offline”

Existen varias formas de usar Google Login con Capacitor. Esta tabla resume las diferencias entre ambas:

Acceso onlineAcceso offline
Requiere backend
Token de acceso duradero
Configuración sencilla

Si todavía no sabes cuál elegir, considera estos escenarios:

  1. Quieres que el usuario inicie sesión y después emitirle un JWT personalizado. Tu app NO llamará a las APIs de Google

    En este caso, elige acceso online.

  2. Tu app llamará a algunas APIs de Google desde el cliente, pero nunca desde el backend

    En este caso, elige acceso online.

  3. Tu app llamará a algunas APIs de Google desde el backend, pero solo cuando el usuario esté usando activamente la app

    En este caso, elige acceso online.

  4. Tu app comprobará periódicamente el calendario del usuario, incluso cuando no esté usando activamente la app

    En este caso, elige acceso offline.

En esta parte del tutorial mostraré cómo validar al usuario en tu backend.

Este ejemplo será muy sencillo y estará basado en las siguientes tecnologías:

Puedes encontrar el código de este ejemplo aquí

Como puedes ver:

VS Code mostrando el código de autenticación de Google que verifica tokens

La idea es bastante simple. Envías una petición GET a https://www.googleapis.com/oauth2/v3/tokeninfo y eso te devuelve si el token es válido o no. Si lo es, también te da el correo electrónico del usuario y otra información sobre su token.

Google OAuth Playground mostrando la respuesta de tokeninfo con los datos del usuario

A partir de ahí, puedes emitir tu propio JWT al usuario o algún tipo de cookie de sesión. Las posibilidades son amplias para la implementación final de autenticación.

Si quieres llamar a las APIs de Google, te recomiendo revisar Google OAuth 2.0 Playground. Desde ahí puedes ver fácilmente qué APIs puedes llamar.

Usando el acceso offline con tu propio backend

Section titled “Usando el acceso offline con tu propio backend”

Para utilizar el acceso online necesitarás lo siguiente:

  • Un servidor HTTP

En este ejemplo, utilizaré las siguientes tecnologías para proporcionar acceso offline en mi aplicación:

El código de este ejemplo se puede encontrar aquí

En cuanto al código del cliente, se ve así:

import { Capacitor } from '@capacitor/core';
import { GoogleLoginOfflineResponse, SocialLogin } from '@capgo/capacitor-social-login';
import { usePopoutStore } from '@/popoutStore'; // <-- specific to my app
const baseURL = "[redacted]";
async function fullLogin() {
await SocialLogin.initialize({
google: {
webClientId: '[redacted]',
iOSClientId: '[redacted]',
iOSServerClientId: 'The same value as webClientId',
mode: 'offline' // <-- important
}
})
const response = await SocialLogin.login({
provider: 'google',
options: {
forceRefreshToken: true // <-- important
}
})
if (response.provider === 'google') {
const result = response.result as GoogleLoginOfflineResponse
const res = await fetch(`${baseURL}/auth/google_offline`, {
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
serverAuthCode: result.serverAuthCode,
platform: Capacitor.getPlatform()
}),
method: "POST"
})
if (res.status !== 200) {
popoutStore.popout("Full google login failed", "check console");
return
}
const { jwt } = await res.json();
const userinfo = await fetch(`${baseURL}/auth/get_google_user`, {
headers: {
Authorization: `Bearer ${jwt}`
}
})
if (userinfo.status !== 200) {
popoutStore.popout("Full google (userinfo) login failed", "check console");
return
}
popoutStore.popout("userinfo res", await userinfo.text());
}
}