Zum Inhalt springen

Google Login einrichten

GitHub

In diesem Guide erfährst du, wie du Google Login mit Capgo Social Login einrichtest. Für die Einrichtung von Google Login benötigst du Folgendes:

  • Ein Google-Konto

In diesem Teil richten Sie den von Google angezeigten Login-Bildschirm ein.

  1. Bitte gehe zu console.cloud.google.com
  2. Klicke auf die Projektauswahl Projektauswahl in der Google Console
  3. Falls Sie noch kein Projekt haben, bitte Neues Projekt erstellen.
    1. Klicken Sie auf New project Schaltfläche „Neues Projekt“ in der Google Console
    2. Benenne dein Projekt und klicke auf Create Projektbenennungsbildschirm mit Namensfeld und Schaltfläche „Erstellen“
    3. Stelle sicher, dass du im richtigen Projekt bist Projektname im Auswahlfeld, der die korrekte Projektauswahl anzeigt
  4. Beginne mit der Konfiguration der OAuth consent screen
    1. Klicke auf die Suchleiste

      Suchleiste der Google Console
    2. Suche nach OAuth consent screen und klicken Sie darauf

      Suchergebnisse mit der Option „OAuth-Consent-Bildschirm“
    3. Einwilligungsbildschirm konfigurieren

      Klicken Sie auf create

      Auswahl des Nutzertyps im OAuth-Einwilligungsbildschirm mit den Optionen External und Internal
  5. App-Informationen ausfüllen
    1. Beginnen wir mit dem App Information

      Abschnitt App-Informationen mit den Feldern App-Name und E-Mail-Adresse für Nutzer-Support
      • Bitte geben Sie Ihren App Name
      • Gib die user support email
      1. Du KANN das App-Logo hinzufügen.

        Bereich für den App-Logo-Upload im OAuth-Consent-Screen
      2. Du SOLLTE konfigurieren App domain

        App-Domain-Konfiguration mit dem Feld für autorisierte Domains
      3. Du MÜSSEN die E-Mail des Entwicklers angeben

        Abschnitt für Entwickler-Kontaktinfos mit E-Mail-Feld
      4. Klicken Sie auf save and continue

        Button „Speichern und Weiter“ am Ende des Formulars
  6. Scopes konfigurieren
    1. Klicken Sie auf add or remove scopes

      Button zum Hinzufügen oder Entfernen von Scopes im Konfigurationsbildschirm
    2. Folgende Scopes auswählen und klicken update

      Scope-Auswahl-Dialog mit ausgewählten E-Mail- und Profil-Scopes
    3. Klicken save and continue

      Button „Speichern und Weiter“ im Scope-Bildschirm
  7. Testbenutzer hinzufügen
    1. Klicken Sie auf add users Button „Benutzer hinzufügen“ im Abschnitt „Testbenutzer“
    2. Gib deine Google-E-Mail-Adresse ein, drücke Enter und klicke auf add E-Mail-Eingabefeld und Button zum Hinzufügen für Testbenutzer
    3. Klicken save and continue Button „Speichern und weiter“ im Bildschirm für Testbenutzer
  8. Klicken back to dashboard Button „Zurück zum Dashboard“ am unteren Rand der Abschlussseite
  9. Reiche deine App zur Verifizierung ein

Es gibt mehrere Möglichkeiten, Google Login mit Capacitor zu verwenden. Die folgende Tabelle fasst die Unterschiede zwischen den beiden zusammen:

Online-ZugriffOffline-Zugriff
Erfordert ein Backend❌✅
Langlebiges Access Token❌✅
Easy setup✅❌

Wenn Sie noch nicht wissen, welche Option Sie wählen sollen, beachten Sie bitte die folgenden Szenarien:

  1. Sie möchten, dass sich der User einloggt, und Sie werden ihm sofort ein eigenes JWT ausstellen. Ihre App ruft keine Google-APIs auf

    Wählen Sie in diesem Fall Online-Zugriff.

  2. Ihre App ruft einige Google-APIs vom Client aus auf, aber nie vom Backend

    Wählen Sie in diesem Fall Online-Zugriff

  3. Ihre App ruft einige Google-APIs vom Backend aus auf, aber nur, wenn der User die App aktiv nutzt

    Wählen Sie in diesem Fall Online-Zugriff

  4. Ihre App prüft den Kalender des Users regelmäßig, auch wenn er die App nicht aktiv nutzt

    Wählen Sie in diesem Fall Offline-Zugriff

In diesem Teil des Tutorials zeige ich, wie du den Benutzer auf deinem Backend validierst.

Dieses Beispiel ist sehr einfach und basiert auf den folgenden Technologien:

Du findest den code für dieses Beispiel hier

Wie du sehen kannst:

VS Code zeigt die Google-Authentifizierung code, die Tokens verifiziert

Die Idee ist ziemlich einfach. Du sendest eine einfache GET Anfrage an https://www.googleapis.com/oauth2/v3/tokeninfo und diese gibt dir zurück, ob das Token gültig ist oder nicht. Falls ja, erhältst du die E-Mail-Adresse des Benutzers. Außerdem bekommst du weitere Informationen zum Benutzertoken.

Google OAuth Playground zeigt eine Antwort mit Token-Informationen und Benutzerdetails

Von dort aus kannst du dem Benutzer einen eigenen JWT ausstellen oder eine Art Session-Cookie setzen. Die Möglichkeiten für die finale Auth-Implementierung sind endlos.

Wenn du tatsächlich die API von Google aufrufen möchtest, empfehle ich dir dringend, einen Blick auf den Google OAuth 2.0 Playgroundzu werfen. Dort kannst du leicht sehen, welche APIs du aufrufen kannst.

Um Offline-Zugriff zu nutzen, benötigst du Folgendes:

  • Einen HTTP-Server

In diesem Beispiel verwende ich die folgenden Technologien, um den Offline-Zugriff in meiner App bereitzustellen:

Den code für dieses Beispiel findest du hier

Der code für den Client sieht so aus:

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

Beachte, was hier fehlt: Es gibt keinen SocialLogin.refresh() Aufruf in der App. Das ist Absicht. Im Google-Offline-Modus erfolgt der Refresh, nachdem dein Backend austauscht serverAuthCode und den Refresh Token sicher speichert.

Wenn du es nutzt Google Login einrichten 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.