Zum Inhalt springen

Google Login unter iOS

GitHub

In diesem Guide erfährst du, wie du Google Login mit Capgo Social Login für iOS einrichtest. Ich setze voraus, dass du bereits den Allgemeine Setup-Anleitung.

In diesem Abschnitt lernst du, wie du Google Login unter iOS einrichtest.

  1. Erstelle eine iOS Client ID in der Google Console

    1. Klicke in die Suchleiste

      Suchleiste der Google Console
    2. Suche nach credentials und klicke auf APIs and Services eins (Nummer 2 im Screenshot)

      Suchergebnisse mit der Option Credentials (APIs & Services hervorgehoben)
    3. Klicke auf die create credentials

      Button „Credentials erstellen“ in der Google Console
    4. Wähle OAuth client ID

      Option „OAuth client ID“ im Menü zur Credential-Erstellung
    5. Wähle die Application type zu iOS

      Auswahl des Anwendungstyps mit markierter iOS-Option
    6. Bundle ID finden

      1. Xcode öffnen

      2. Doppelklicke auf App

        App-Target im Xcode-Projektnavigator
      3. Stelle sicher, dass du dich im Targets -> App

        Targets-Bereich in Xcode mit ausgewählter App befindest
      4. Finde dein Bundle Identifier

        Bundle-Identifier-Feld in den Xcode-Projekteinstellungen
      5. Zurück zur Google Console gehen und deine Bundle Identifier in Bundle ID

        Bundle-ID-Feld im iOS-Client-Formular der Google Console
    7. Optional füge deine App Store ID oder Team ID in die Client-ID ein, falls du deine App im App Store veröffentlicht hast

    8. Nachdem du alle Details ausgefüllt hast, klicke auf create

      Button am Ende des iOS-Client-Erstellungsformulars erstellen
    9. Klicken OK

      OK-Button im Bestätigungsdialog für die erstellte Client-ID
    10. Öffne den neu erstellten iOS-Client

      Neu erstellter iOS-Client in der Credentials-Liste
    11. Kopiere die folgenden Daten

      Details zur Client ID mit Client ID und umgekehrter Client ID zum Kopieren
  2. Info.plist deiner App anpassen

    1. Öffne Xcode und suche die Info.plist Datei

      Info.plist-Datei im Xcode Project Navigator
    2. Rechtsklick auf diese Datei und als code öffnen

      Rechtsklick-Menü mit der Option Open As Source Code
    3. Ganz unten in deinem Plist Datei siehst du ein </dict> Tag

      Schließendes dict-Tag in der Info.plist-Datei
    4. Füge das folgende Fragment direkt vor dem schließenden </dict> Tag

      Info.plist mit URL-Schemes code, eingefügt vor dem schließenden dict-Tag
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Ändere den YOUR_DOT_REVERSED_IOS_CLIENT_ID auf den im vorherigen Schritt kopierten Wert

      Info.plist mit der tatsächlichen reversed Client-ID in den URL Schemes
    6. Speichere die Datei mit Command + S

  3. Ändere die AppDelegate.swift

    1. Öffne die AppDelegate

      AppDelegate.swift-Datei im Xcode Project Navigator
    2. Einfügen import GoogleSignIn am Anfang der Datei

      AppDelegate.swift mit hinzugefügtem GoogleSignIn import
    3. Suche nach func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) Funktion

      Ursprüngliche application openURL Funktion in AppDelegate
    4. Ändere die Funktion wie folgt

      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)
      }
      Angepasste application openURL Funktion mit GoogleSignIn Handling
    5. Speichere die Datei mit Command + S

  4. Google Login in deinem JavaScript/TypeScript code einrichten

    1. Importieren SocialLogin und Capacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. Rufe die initialize-Methode auf (nur einmal aufrufen)

      Basis-Setup (Online-Modus – empfohlen für die meisten Apps):

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

      Erweitertes Setup mit zusätzlichen Client-IDs:

      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. Implementiere die Login-Funktion. Erstelle einen Button und führe beim Klick folgenden code aus

      Für den Online-Modus:

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

      Für den Offline-Modus:

      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. Teste deine App

    1. App bauen und ausführen cap sync

    2. Wenn alles korrekt eingerichtet ist, sollte der Google Login-Flow einwandfrei funktionieren

      Demo des Google Login-Flows auf iOS mit Sign-in-Prozess und erfolgreicher Authentifizierung

Inkompatibilität mit dem Privacy Screen Plugin

Abschnitt „Inkompatibilität mit dem Privacy Screen Plugin“

Das Google Login Plugin ist nicht kompatibel mit @capacitor/privacy-screen. Wenn beide Plugins gleichzeitig genutzt werden, wird die Google-Login-Webview durch den Privacy Screen unterbrochen.

Workaround: Rufe await PrivacyScreen.disable(); vor dem Aufruf der Login-Funktion:

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

Wenn du es nutzt Google Login unter iOS Um Authentifizierungs- und Account-Flows zu planen, verbinde es mit @capgo/capacitor-social-login verwenden für die native Funktion bei der Verwendung von @capgo/capacitor-social-login, @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetails zur Zwei-Faktor-Authentifizierung.