Vai al contenuto

Google Login su iOS

GitHub

In questa guida imparerai a configurare Google Login con Capgo Social Login per iOS. Presumo che tu abbia già letto la guida alla configurazione generale.

In questa sezione imparerai a configurare il login con Google su iOS.

  1. Crea un client ID iOS nella console di Google

    1. Clicca sulla barra di ricerca

      Barra di ricerca della Google Console
    2. Cerca credentials and click on the APIs and Services quello (numero 2 nello screenshot)

      Risultati della ricerca che mostrano l'opzione Credentials con APIs and Services evidenziati
    3. Clicca sul create credentials

      Pulsante Create credentials nella Google Console
    4. Seleziona OAuth client ID

      Opzione OAuth client ID nel menu di creazione delle credenziali
    5. Seleziona la Application type a iOS

      Selezione del tipo di applicazione con l'opzione iOS evidenziata
    6. Trova il bundle ID

      1. Apri Xcode

      2. Fai doppio clic su App

        App target nel navigatore del progetto Xcode
      3. Assicurati di essere nella Targets -> App

        sezione Targets di Xcode con l'App selezionata
      4. Trova il tuo Bundle Identifier

        campo Bundle Identifier nelle impostazioni del progetto Xcode
      5. Torna sulla Google Console e incolla il tuo Bundle Identifier all'interno Bundle ID

        Campo Bundle ID nel modulo di creazione client iOS di Google Console
    7. Opzionalmente, aggiungi il tuo App Store ID o Team ID nel client ID se hai pubblicato l'app su App Store

    8. Dopo aver inserito tutti i dettagli, clicca sul create

      pulsante Create in fondo al modulo di creazione client iOS
    9. Clicca su OK

      pulsante OK nella finestra di conferma del client ID creato
    10. Apri il nuovo client iOS creato

      Nuovo client iOS creato nell'elenco delle credenziali
    11. Copia i seguenti dati

      Dettagli del Client ID con Client ID e client ID invertito da copiare
  2. Modifica l'Info.plist della tua app

    1. Apri Xcode e trova il Info.plist file

      file Info.plist nel navigatore del progetto Xcode
    2. Clicca col tasto destro su questo file e aprilo come sorgente code

      Menu contestuale con l'opzione Open As Source Code
    3. In fondo al tuo Plist file, vedrai un </dict> tag

      Tag di chiusura dict nel file Info.plist
    4. Inserisci il seguente frammento subito prima del tag di chiusura </dict> tag

      Info.plist con gli URL schemes code inseriti prima del tag di chiusura dict
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Cambia il YOUR_DOT_REVERSED_IOS_CLIENT_ID al valore copiato nel passaggio precedente

      Info.plist con il reversed client ID inserito negli URL schemes
    6. Salva il file con Command + S

  3. Modifica il AppDelegate.swift

    1. Apri l'AppDelegate

      file AppDelegate.swift nel navigatore del progetto Xcode
    2. Inserisci import GoogleSignIn all'inizio del file

      AppDelegate.swift con l'import di GoogleSignIn aggiunto
    3. Trova il func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) funzione

      Funzione application openURL originale in AppDelegate
    4. Modifica la funzione in questo modo

      func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
      // Called when the app was launched with a url. Feel free to add additional processing here,
      // but if you want the App API to support tracking app url opens, make sure to keep this call
      var handled: Bool
      handled = GIDSignIn.sharedInstance.handle(url)
      if handled {
      return true
      }
      return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
      }
      Funzione application openURL modificata con gestione GoogleSignIn
    5. Salva il file con Command + S

  4. Configura il login con Google nel tuo code JavaScript/TypeScript

    1. Importa SocialLogin e Capacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. Chiama il metodo initialize (va chiamato una sola volta)

      Basic setup (online mode - recommended for most apps):

      // onMounted is Vue specific
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      iOSClientId: '673324426943-redacted.apps.googleusercontent.com',
      mode: 'online' // Default mode
      }
      })
      })

      Configurazione avanzata con client ID aggiuntivi:

      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: 'YOUR_WEB_CLIENT_ID', // Optional: for web platform support
      iOSClientId: 'YOUR_IOS_CLIENT_ID', // Required: from step 1
      iOSServerClientId: 'YOUR_WEB_CLIENT_ID', // Optional: same as webClientId, needed for some advanced features
      mode: 'online' // 'online' or 'offline'
      }
      })
      })
    3. Implementa la funzione di login. Crea un pulsante ed esegui il seguente code al click

      Per la modalità online:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response - contains user data
      console.log(JSON.stringify(res))

      Per la modalità offline:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {
      forceRefreshToken: true // Recommended for offline mode
      }
      })
      // res contains serverAuthCode, not user data
      // Send serverAuthCode to your backend to get user information
      // Do not call SocialLogin.refresh() in offline mode
      console.log('Server auth code:', res.result.serverAuthCode)
  5. Testa la tua applicazione

    1. Builda e avvia l'app cap sync

    2. Se hai fatto tutto correttamente, dovresti vedere il flusso di login di Google funzionare correttamente

      Demo del flusso di login Google su iOS che mostra il processo di sign-in e l'autenticazione riuscita

Il plugin Google Login è incompatibile con @capacitor/privacy-screen. Se utilizzi entrambi i plugin insieme, la webview del login di Google verrà interrotta dalla privacy screen.

Workaround: Chiama await PrivacyScreen.disable(); prima di chiamare la funzione di login:

import { PrivacyScreen } from '@capacitor/privacy-screen';
import { SocialLogin } from '@capgo/capacitor-social-login';
await PrivacyScreen.disable();
await SocialLogin.login({
provider: 'google',
options: {}
});

Se stai usando Google Login su iOS per pianificare i flussi di autenticazione e account, collegandolo a Utilizzo di @capgo/capacitor-social-login per la funzionalità nativa in Utilizzo di @capgo/capacitor-social-login, @capgo/capacitor-social-login per i dettagli di implementazione in @capgo/capacitor-social-login, @capgo/capacitor-passkey per i dettagli di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric per i dettagli di implementazione in @capgo/capacitor-native-biometric, e Autenticazione a due fattori per i dettagli sull'implementazione dell'autenticazione a due fattori.