Saltar al contenido

Google Login en iOS

GitHub

En esta guía aprenderás a configurar Google Login con Capgo Social Login para iOS. Asumo que ya has leído la guía de configuración general.

En esta parte, aprenderás a configurar el inicio de sesión de Google en iOS.

  1. Crea un ID de cliente de iOS en la consola de Google

    1. Haz clic en la barra de búsqueda

      Barra de búsqueda de Google Console
    2. Busca credentials y haz clic en el APIs and Services uno (número 2 en la captura de pantalla)

      Resultados de búsqueda que muestran la opción de credenciales con APIs y servicios resaltados
    3. Haz clic en el create credentials

      Botón Crear credenciales en Google Console
    4. Selecciona OAuth client ID

      Opción de client ID de OAuth en el menú de creación de credenciales
    5. Selecciona el Application type a iOS

      Selección del tipo de aplicación con la opción iOS resaltada
    6. Busca el bundle ID

      1. Abre Xcode

      2. Haz doble clic en App

        App target in Xcode project navigator
      3. Asegúrate de estar en la Targets -> App

        sección Targets de Xcode con la app seleccionada
      4. Busca tu Bundle Identifier

        campo Bundle Identifier en los ajustes del proyecto de Xcode
      5. Vuelve a Google Console y pega tu Bundle Identifier en Bundle ID

        Campo Bundle ID en el formulario de creación de cliente iOS de Google Console
    7. Opcionalmente, añade tu App Store ID o Team ID al client ID si has publicado tu app en App Store

    8. Después de rellenar todos los detalles, haz clic en create

      botón Create en la parte inferior del formulario de creación de cliente iOS
    9. Haz clic OK

      botón OK en el diálogo de confirmación de client ID creado
    10. Abre el cliente iOS recién creado

      Cliente iOS recién creado en la lista de credenciales
    11. Copia los siguientes datos

      Detalles del Client ID: muestra el Client ID y el Client ID invertido para copiar
  2. Modifica el Info.plist de tu app

    1. Abre Xcode y busca el Info.plist archivo

      Archivo Info.plist en el navegador de proyectos de Xcode
    2. Haz clic derecho en este archivo y elige Open As Source code

      Menú contextual que muestra la opción Open As Source Code
    3. En la parte inferior de tu Plist archivo, verás una </dict> etiqueta

      Etiqueta dict de cierre en el archivo Info.plist
    4. Inserta el siguiente fragmento justo antes del cierre de la </dict> etiqueta

      Info.plist con los URL schemes code insertados antes de la etiqueta dict de cierre
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Cambiar el YOUR_DOT_REVERSED_IOS_CLIENT_ID al valor copiado en el paso anterior

      Info.plist con el reversed client ID real insertado en los URL schemes
    6. Guarda el archivo con Command + S

  3. Modifica el AppDelegate.swift

    1. Abre el AppDelegate

      Archivo AppDelegate.swift en el navegador del proyecto de Xcode
    2. Insertar import GoogleSignIn al principio del archivo

      AppDelegate.swift con el import de GoogleSignIn añadido
    3. Busca el func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) función

      Función application openURL original en AppDelegate
    4. Modifica la función para que se vea así

      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)
      }
      Función application openURL modificada con el manejo de GoogleSignIn
    5. Guarda el archivo con Command + S

  4. Configura el login de Google en tu code de JavaScript/TypeScript

    1. Importar SocialLogin y Capacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. Llama al método initialize (solo debe llamarse una vez)

      Configuración básica (modo online - recomendado para la mayoría de las apps):

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

      Configuración avanzada con IDs de cliente adicionales:

      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 función de login. Crea un botón y ejecuta el siguiente code al hacer clic

      Para el modo en línea:

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

      Para el modo sin conexión:

      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. Prueba tu aplicación

    1. Compila tu app y ejecútala cap sync

    2. Si lo has hecho todo correctamente, deberías ver que el flujo de inicio de sesión de Google funciona correctamente

      Demo del flujo de inicio de sesión de Google en iOS que muestra el proceso de acceso y la autenticación exitosa

El plugin Google Login es incompatible con @capacitor/privacy-screen. Al usar ambos plugins juntos, la pantalla de privacidad interrumpirá el webview de inicio de sesión de Google.

Solución: Llama a await PrivacyScreen.disable(); antes de llamar a la función de inicio de sesión:

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

Si estás usando Google Login en iOS para planificar los flujos de autenticación y de cuenta, conéctalo con Uso de @capgo/capacitor-social-login para la capacidad nativa en el uso de @capgo/capacitor-social-login, @capgo/capacitor-social-login para los detalles de implementación en @capgo/capacitor-social-login, @capgo/capacitor-passkey para el detalle de implementación en @capgo/capacitor-passkey, @capgo/capacitor-native-biometric para el detalle de implementación en @capgo/capacitor-native-biometric, y Autenticación de dos factores para el detalle de implementación en la autenticación de dos factores.