Vai al contenuto

Configurazione del login Google

In questa guida vedrai come configurare il login Google con Capgo Social Login. Per completare la configurazione ti servirà:

  • Un account Google

In questa sezione configurerai la schermata di login mostrata da Google.

  1. Vai su console.cloud.google.com
  2. Fai clic sul selettore del progetto Selettore del progetto nella Google Console
  3. Se non hai ancora un progetto, creane uno nuovo.
    1. Fai clic su New project Pulsante New project nella Google Console
    2. Assegna un nome al progetto e fai clic su Create Schermata di creazione del progetto con campo nome e pulsante Create
    3. Assicurati di essere nel progetto corretto Nome del progetto mostrato nel selettore dopo la selezione corretta
  4. Inizia la configurazione di OAuth consent screen
    1. Fai clic sulla barra di ricerca

      Barra di ricerca della Google Console
    2. Cerca OAuth consent screen e fai clic sul risultato

      Risultati di ricerca con l'opzione OAuth consent screen
    3. Configura la schermata di consenso

      Fai clic su Create

      Schermata di scelta del tipo di utente per OAuth consent screen
  5. Compila le informazioni sulla tua app
    1. Inizia da App Information

      Sezione App Information con nome dell'app ed email di supporto
      • Inserisci il tuo App Name
      • Inserisci la User support email
    2. Puoi aggiungere il logo dell’app

      Sezione per il caricamento del logo dell'app
    3. Dovresti configurare App domain

      Sezione App domain con il campo per i domini autorizzati
    4. Devi fornire l’email dello sviluppatore

      Sezione Developer contact information con il campo email
    5. Fai clic su Save and continue

      Pulsante Save and continue in fondo al modulo
  6. Configura gli scope
    1. Fai clic su Add or remove scopes Pulsante Add or remove scopes nella schermata degli scope
    2. Seleziona i seguenti scope e fai clic su Update Finestra di selezione degli scope con email e profile selezionati
    3. Fai clic su Save and continue Pulsante Save and continue nella schermata degli scope
  7. Aggiungi un utente di test
    1. Fai clic su Add users Pulsante Add users nella sezione utenti di test
    2. Inserisci il tuo indirizzo Gmail, premi Invio e fai clic su Add Campo email e pulsante Add per gli utenti di test
    3. Fai clic su Save and continue Pulsante Save and continue nella schermata degli utenti di test
  8. Fai clic su Back to dashboard Pulsante Back to dashboard nella schermata finale
  9. Invia l’app per la verifica

Differenze tra accesso online e accesso offline

Section titled “Differenze tra accesso online e accesso offline”

Esistono diversi modi per usare il login Google con Capacitor. La tabella seguente riassume le differenze principali:

Accesso onlineAccesso offline
Richiede un backend
Token di lunga durata
Configurazione semplice

Se non sai ancora quale modalità scegliere, considera questi scenari:

  1. Vuoi far effettuare il login all’utente e subito dopo emettere un JWT personalizzato. La tua app non chiamerà le API Google.

    In questo caso, scegli l’accesso online.

  2. La tua app chiamerà alcune API Google dal client, ma mai dal backend.

    In questo caso, scegli l’accesso online.

  3. La tua app chiamerà alcune API Google dal backend, ma solo mentre l’utente sta usando attivamente l’app.

    In questo caso, scegli l’accesso online.

  4. La tua app controllerà periodicamente il calendario dell’utente anche quando non sta usando attivamente l’app.

    In questo caso, scegli l’accesso offline.

Un backend di esempio per l’accesso online

Section titled “Un backend di esempio per l’accesso online”

In questa parte del tutorial vedrai come validare l’utente sul tuo backend.

L’esempio è volutamente semplice ed è basato sulle seguenti tecnologie:

Puoi trovare il codice di questo esempio qui.

Come puoi vedere:

VS Code con il codice di verifica del token Google

L’idea è molto semplice. Invi una richiesta GET a https://www.googleapis.com/oauth2/v3/tokeninfo e Google ti restituisce se il token è valido oppure no. Se è valido, la risposta include anche l’email dell’utente e altre informazioni sul token.

Google OAuth Playground con la risposta di tokeninfo e i dati dell'utente

Da lì puoi emettere il tuo JWT oppure creare una sessione tramite cookie. Per l’implementazione finale dell’autenticazione, le possibilità sono molte.

Se vuoi chiamare le API Google, ti consiglio di usare Google’s OAuth 2.0 Playground. Ti permette di vedere facilmente quali API puoi chiamare.

Utilizzare l’accesso offline con il tuo backend

Section titled “Utilizzare l’accesso offline con il tuo backend”

Per utilizzare l’accesso offline ti servirà:

  • Un server HTTP

In questo esempio userò le seguenti tecnologie per fornire l’accesso offline nella mia app:

Il codice completo di questo esempio è disponibile qui.

Per quanto riguarda il codice client, si presenta così:

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());
}
}