Saltar al contenido

Configuración de inicio de sesión de Google

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

  • Una cuenta de Google

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

  1. Por favor, ve a console.cloud.google.com
  2. Haz clic en el selector de proyecto Selector de proyecto de Google Console
  3. Si no tienes un proyecto ya creado, por favor crea un nuevo proyecto.
    1. Haz clic en New project Botón de nuevo proyecto en Google Console
    2. Nombra tu proyecto y haz clic Create Pantalla de nombre de proyecto mostrando el campo de nombre y el botón Crear
    3. Asegúrate de estar en el proyecto correcto Nombre del proyecto mostrado en el selector indicando selección de proyecto correcta
  4. Comienza a configurar el OAuth consent screen
    1. Haz clic en la barra de búsqueda

      Barra de búsqueda de Google Console
    2. Busca OAuth consent screen y haz clic en ella

      Resultados de búsqueda mostrando opción de pantalla de consentimiento de OAuth
    3. Configura la pantalla de consentimiento

      Haga clic en create

      Pantalla de consentimiento de OAuth con opciones de External y Internal
  5. Rellene la información sobre su aplicación
    1. Comencemos con la sección App Information

      Información de la aplicación mostrando campos de nombre de la aplicación y correo electrónico de soporte del usuario
      • Por favor, escriba su App Name
      • Ingrese el user support email
      1. DEBES poder agregar el logo de la aplicación.

        Sección de carga de logo de la aplicación en pantalla de consentimiento de OAuth
      2. DEBES configure la App domain

        sección de configuración de dominio de la aplicación con campo de dominios autorizados
      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

        Haz clic en
      4. configure la save and continue

        Guardar y Continuar en el botón de la parte inferior de la forma
  6. Configurar los alcances
    1. Haga clic en add or remove scopes

      Agregar o eliminar botón de alcances en la pantalla de configuración de alcances
    2. Seleccione los siguientes alcances y haga clic update

      Dialogo de selección de alcance con alcances de correo electrónico y perfil seleccionados
    3. Haga clic save and continue

      Guardar y Continuar en la pantalla de alcances
  7. Agregar un usuario de prueba
    1. Haga clic en add users Agregar usuarios en la sección de usuarios de prueba
    2. Ingrese su correo electrónico de Google, presione enter y haga clic add Campo de entrada de correo electrónico y botón Agregar para usuarios de prueba
    3. Haga clic save and continue Botón Guardar y Continuar en pantalla de usuarios de prueba
  8. Haga clic back to dashboard Botón Volver a la consola en la parte inferior de la página de completado
  9. Presente su aplicación para verificación

Diferencias entre acceso en línea y acceso sin conexión

Diferencias entre acceso en línea y acceso en modo offline

Hay varias formas de utilizar el inicio de sesión de Google con Capacitor. A continuación, se muestra una tabla que resume las diferencias entre los dos:

Acceso en líneaAcceso en modo offline
Requiere un backend
Token de acceso de larga duración
Configuración fácil

Si todavía no sabes cuál debes elegir, por favor considera los siguientes escenarios:

  1. Quieres que el usuario inicie sesión, inmediatamente después vas a emitirle un JWT personalizado. Tu aplicación NO llamará a las API de Google

    En este caso, elija el acceso en línea.

  2. Su aplicación llamará a algunas API de Google desde el cliente, pero nunca desde el servidor.

    En este caso, elija el acceso en línea.

  3. Su aplicación llamará a algunas API de Google desde el servidor, pero solo cuando el usuario esté utilizando la aplicación de manera activa.

    En este caso, elija el acceso en línea.

  4. Su aplicación verificará periódicamente el calendario del usuario, incluso cuando no esté utilizando la aplicación de manera activa.

    En este caso, elija el acceso sin conexión.

Un ejemplo de servidor para el acceso en línea.

Sección titulada “Un ejemplo de servidor para el acceso en línea”.

En esta parte del tutorial, mostraré cómo validar al usuario en su servidor.

Este ejemplo será muy simple y se basará en las siguientes tecnologías:

Puedes encontrar el code para este ejemplo aquí

Como puedes ver:

VS Code mostrando la autenticación de Google code que verifica tokens

La idea es bastante simple. Envías una solicitud simple a GET y esto te devuelve si el token es válido o no y si lo es, te da el correo electrónico del usuario. También te da alguna otra información sobre el token del usuario https://www.googleapis.com/oauth2/v3/tokeninfo Google OAuth Playground mostrando información de respuesta de token con detalles del usuario

Desde allí, podrías emitir al usuario un JWT propio o emitir una cookie de sesión. Las posibilidades son infinitas para la implementación de autenticación final.

Si deseas llamar a Google __CAPGO_KEEP_0__’, te recomendaría fuertemente que mires a

API Jardín de Juego de OAuth 2.0 de Google. Desde allí, puedes ver fácilmente qué APIs puedes llamar.

Para usar el acceso en línea, necesitarás lo siguiente:

  • Un servidor HTTP

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

La code para este ejemplo se puede encontrar aquí

En cuanto al cliente code, 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());
}
}

Fíjese en qué está faltando aquí: no hay SocialLogin.refresh() llamada en la aplicación. Eso es intencional. En modo de línea aérea de Google, el refresco ocurre después de que su servidor intercambia serverAuthCode y almacena el token de refresco de manera segura.