Google Login unter Android
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Einführung
Abschnitt „Einführung“In diesem Guide erfährst du, wie du Google Login mit Capgo Social Login für Android einrichtest. Ich setze voraus, dass du bereits den Allgemeine Setup-Anleitung.
Google Login unter Android verwenden
Abschnitt „Using Google login on Android“ gelesen hastIn diesem Teil lernst du, wie du Google Login unter Android einrichtest.
-
Android Client ID erstellen.
-
Klicke in die Suchleiste
-
Suche nach
credentialsund klicke aufAPIs and Serviceseins (Nummer 2 im Screenshot)
-
Klicke auf die
create credentials
-
Wähle
OAuth client ID
-
Wähle die
AndroidAnwendungstyp
-
Android Studio öffnen
-
Ganz unten im Navigator findest du den
Gradle Scripts
-
Finde
build.gradlefür das Modulapp
-
Kopiere den
android.defaultConfig.applicationId. Das wird deinepackage namein der Google Console
-
Öffne nun das Terminal. Stelle sicher, dass du dich im
androidOrdner deiner App und führe aus./gradlew signInReport
- Scrolle in der Ausgabe dieses Befehls nach oben. Du solltest Folgendes sehen. Kopiere die
SHA1.
- Gehe nun zurück zur Google Console. Gib deinen
applicationIdalsPackage Nameund deinen SHA1 in das Zertifikatsfeld ein und klicke aufcreate
-
-
Erstelle einen Web-Client (erforderlich für Android)
-
Besuchen Sie die
Create credentialsSeite in der Google Console -
Anwendungstyp setzen auf
Web
-
Klicken
Create
-
Kopiere die Client ID; du wirst sie als
webClientIdin deinem JS/TS code verwenden
-
-
Ändere dein
MainActivity-
Bitte öffne deine App in Android Studio. Du kannst
cap open android -
Finde
MainActivity.java-
Öffne die
appOrdner
-
Finde
java
-
Suche deinen
MainActivity.javaund klicke darauf
-
-
Ändere
MainActivity.java. Bitte füge die folgende code hinzuimport ee.forgr.capacitor.social.login.GoogleProvider;import ee.forgr.capacitor.social.login.SocialLoginPlugin;import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;import com.getcapacitor.PluginHandle;import com.getcapacitor.Plugin;import android.content.Intent;import android.util.Log;import com.getcapacitor.BridgeActivity;// ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");if (pluginHandle == null) {Log.i("Google Activity Result", "SocialLogin login handle is null");return;}Plugin plugin = pluginHandle.getInstance();if (!(plugin instanceof SocialLoginPlugin)) {Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");return;}((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);}}// This function will never be called, leave it empty@Overridepublic void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}} -
Datei speichern
-
-
Google Login in deiner App nutzen
-
Importiere zuerst
SocialLoginimport { SocialLogin } from '@capgo/capacitor-social-login'; -
Rufe initialize auf. Dies sollte nur einmal geschehen.
// onMounted is Vue specific// webClientId is the client ID you got in the web client creation step not the android client ID.onMounted(() => {SocialLogin.initialize({google: {webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',}})}) -
Rufe
SocialLogin.login. Erstelle einen Button und führe beim Klick folgendes code aus.const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
Emulator zum Testen konfigurieren
-
Gehe zu
Device managerund klicke auf den Plus-Button
-
Virtuelles Gerät erstellen
-
Wähle ein beliebiges Gerät mit einem
Play StoreIcon
Wie du siehst, unterstützt
pixel 8unterstütztPlay StoreServices -
Klicken
next
-
Stelle sicher, dass das OS-Image vom Typ
Google Play. ES MUSS vom Typ istGoogle Play
-
Weiter klicken
-
Bestätige dein Device. Du kannst den Emulator frei benennen
-
Gehe zu
Device Managerund starte deinen Simulator
-
Gehe nach dem Booten des Simulators in seine Einstellungen
-
Gehe zu
Google Play
- Klicken
Updateund warte etwa 60 Sekunden
-
-
Teste deine App
Wenn du alles richtig gemacht hast, solltest du sehen, dass der Google-Login-Flow einwandfrei funktioniert:
Fehlerbehebung
Abschnitt mit dem Titel „Troubleshooting“Falls Probleme auftreten, vergleiche zuerst deine App-Konfiguration mit den Werten in der Google Cloud Console. Fehler beim Android Google Sign-In liegen meist an einer Diskrepanz bei Package Name, SHA-1 oder Client ID.
Credential Manager, SHA-1 und Firebase
Abschnitt mit dem Titel „Credential Manager, SHA-1 und Firebase“Unter Android nutzt dieses Plugin den Google Credential Manager (androidx.credentials und Sign in with Google), nicht das veraltete GoogleSignInClient API. Logcat-Fehler wie GetCredentialCustomException: [28444] Developer console is not set up correctly stammen aus diesem Stack.
Logcat filtern mit GoogleProvider oder CapgoSocialLogin nach einem fehlgeschlagenen Login. Das Plugin loggt deinen Package Name, den Signing-SHA-1 und eine maskierte webClientId damit du sie mit der Google Cloud Console vergleichen kannst.
Erforderliches Google Cloud Setup
Abschnitt: „Erforderliches Google Cloud Setup“Du benötigst zwei Arten von OAuth 2.0 Client IDs im selben Google Cloud Projekt:
| Client-Typ | Verwendung | Verwendung |
|---|---|---|
| Webanwendung | Server / ID Token Audience | webClientId in SocialLogin.initialize() |
| Android, jeweils eine pro Signing Key | Bestätigt, dass deine APK Google-Anfragen stellen darf | Nur Google Cloud Console. Gib diese ID niemals an webClientId |
Ein häufiger Fehler ist die Verwendung der Android-Client-ID als webClientId. Der Credential Manager benötigt dort die Web-Client-ID. Der Android-Client benötigt lediglich den korrekten Package-Namen und die in der Console registrierte SHA-1.
Erstelle für jedes Zertifikat, mit dem du deine Test-Builds signierst, einen Android-OAuth-Client:
- Debug: von
./gradlew signingReportfür die Debug-Variante. - Release: von der APK oder AAB, die du tatsächlich installierst.
- Play App Signing: aus der Play Console > App-Integrität > App-Signaturschlüssel-Zertifikat. Das ist für Play-Store-Builds erforderlich, selbst wenn die SHA-1 deines Upload-Keys bereits registriert ist.
Der applicationId in android/app/build.gradle muss exakt mit dem Package-Namen des Android-OAuth-Clients übereinstimmen, inklusive eventuellem .debug Suffix.
Wenn der OAuth Consent Screen im Testmodus ist, füge jedes Google-Konto, mit dem du testest, unter Audience > Test users hinzu. Die App in Production zu veröffentlichen ist nicht erforderlich für email und profile Scopes. Digital Asset Links (assetlinks.json) sind für Sign in with Google über den Credential Manager nicht erforderlich.
Änderungen in Google Cloud brauchen bis zu ein paar Stunden, bis sie wirksam werden.
Fehler 28444: Developer Console nicht korrekt eingerichtet
Abschnitt mit dem Titel „Error 28444: Developer console is not set up correctly“Das bedeutet fast immer, dass Google die Kombination aus installiertem APK-Signing-Zertifikat, Paketnamen und webClientId abgelehnt hat. Gehe diese Checkliste durch:
- Bestätigen
webClientIdist die Web-App-Client-ID und endet mit.apps.googleusercontent.com. - Starte die App, reproduziere den Fehler und sieh im Logcat nach
GoogleProvider,signingSha1=, undpackage=. - Unter Google Cloud Console > Anmeldedaten, öffne deinen Android OAuth-Client und überprüfe den exakten Package-Namen sowie die SHA-1.
- Falls du einen Release-Build testest, registriere die SHA-1 dieses Builds und nicht nur den Debug-Keystore.
- Wird die App über den Play Store verteilt, registriere zusätzlich die Play App Signing SHA-1.
- Stelle sicher, dass Web- und Android-Clients im selben Google Cloud-Projekt liegen.
- Wenn der Consent Screen auf „Testing“ steht, stelle sicher, dass das Google-Konto als Testnutzer hinterlegt ist.
- Wait and retry after console changes.
USER_CANCELLED nach der Kontenauswahl bei einem falsch konfigurierten Debug-Build kann es immer noch ein SHA-1- oder Client-ID-Mismatch sein. Korrigiere zuerst das Console-Setup oben.
SHA-1 aus dem installierten Build extrahieren
Abschnitt „SHA-1 aus dem installierten Build extrahieren“Debug- oder lokale Builds:
cd android && ./gradlew signingReportSignierte Release-APK:
keytool -printcert -jarfile android/app/release/app-release.apkFüge diesen SHA-1 zu einem Android OAuth-Client mit dem passenden Package-Namen hinzu, installiere die signierte APK erneut und teste es noch einmal:
adb install android/app/release/app-release.apkLogin-Ergebnis auslesen
Abschnitt mit dem Titel „Login-Ergebnis lesen“Tokens sind verschachtelt unter result:
const login = await SocialLogin.login({ provider: 'google' });const idToken = login.result?.idToken;Erstelle für Firebase Auth die Credentials dort idToken und verwende die Web Client ID als webClientId in initialize.
Falls du das Development SHA-1 Zertifikat nicht erhältst, versuche es mit einem Custom Keystore. Dieser Issue-Kommentar erklärt, wie du einen Keystore zu deinem Projekt hinzufügst.
Weiter nach dem Google Login auf Android
Abschnitt mit dem Titel „Keep going from Google Login on Android“Wenn du es nutzt Google Login unter Android 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.