️ Ab Plugin-Version 6.0.0 ist die mindestens erforderliche Cordova-ios-Version 4.5.0. Müssen Sie eine niedrigere Cordova-ios-Version verwenden? Verwenden Sie die Plugin-Version 5.3.2 oder niedriger.
idToken
serverAuthCode
Mit diesem Plugin können Sie Benutzer mit der Google-Anmeldung auf iOS und Android authentifizieren und identifizieren. Standardmäßig erhalten Sie E-Mail, Anzeigenamen, Vornamen, Nachnamen, Profilbild-URL und Benutzer-ID. Sie können es auch so konfigurieren, dass ein idToken und ein serverAuthCode abgerufen werden.
Dieses Plugin umschließt nur den Zugriff auf die Google Sign-In API. Weitere API-Zugriffe sollten pro Anwendungsfall und pro Entwickler implementiert werden.
Android
iOS
Um mit Google zu kommunizieren, müssen Sie leider eine mühsame Einrichtung durchführen.
Es wird (dringend) empfohlen, dasselbe Projekt für iOS und Android zu verwenden.
Gehen Sie in Ihre config.xml
und stellen Sie sicher, dass Ihr Paketname (dh die App-ID) Ihren Wünschen entspricht. Verwenden Sie diesen Paketnamen beim Einrichten von iOS und Android in den folgenden Schritten! Wenn Sie dies nicht tun, erhalten Sie wahrscheinlich die Fehlermeldung 12501 „Benutzer abgebrochen“, obwohl Sie den Anmeldevorgang nie abgebrochen haben.
Dieser Schritt ist besonders wichtig, wenn Sie ein Framework wie Ionic zum Gerüst Ihres Projekts verwenden. Wenn Sie das Projekt erstellen, verfügt die config.xml
über einen Platzhalter-Paketnamen, z. B. com.ionic.*, sodass Sie sofort mit der Entwicklung beginnen können.
<? xml version = ' 1.0 ' encoding = ' utf-8 ' ?>
< widget id = " ** REPLACE THIS VALUE ** " ...>
...
</ widget >
Für die Browserplattform ist eine gültige WEB_APPLICATION_CLIENT_ID
erforderlich, die in der Google Developer Console generiert wurde. Stellen Sie sicher, dass Sie Ihre URL-Adresse (Beispiel: http://localhost:3000
) zum Abschnitt „Autorisierte JavaScript-Ursprünge“ hinzugefügt haben. Sehen Sie sich zum Beispiel diesen Screenshot an
Um Ihre iOS REVERSED_CLIENT_ID
zu erhalten, generieren Sie hier eine Konfigurationsdatei. Diese GoogleService-Info.plist
Datei enthält die REVERSED_CLIENT_ID
, die Sie während der Installation benötigen. Dieser Wert wird nur für iOS benötigt.
Die REVERSED_CLIENT_ID
wird in der Entwicklerkonsole auch als „iOS-URL-Schema“ bezeichnet.
Bei der Anmeldung unter iOS gelangt der Benutzer über das Google SDK zu einem SafariViewController und nicht über den separaten Safari-Browser.
Um Android zu konfigurieren, generieren Sie hier eine Konfigurationsdatei. Aktivieren Sie die Google-Anmeldung und fügen Sie eine Android-App hinzu, um den SHA1-Fingerabdruck hinzuzufügen. Sobald die Google-Anmeldung aktiviert ist, erstellt Google automatisch die erforderlichen Anmeldeinformationen in der Developer Console für Web und Android. Es ist nicht erforderlich, die generierte Datei „google-services.json“ zu Ihrem Cordova-Projekt hinzuzufügen. Möglicherweise müssen Sie den Zustimmungsbildschirm konfigurieren.
Stellen Sie sicher, dass Sie die keytool
-Schritte wie hier erläutert ausführen, da sonst die Authentifizierung fehlschlägt (tun Sie dies sowohl für Release- als auch für Debug-Keystores).
WICHTIG:
keytool
werden zwei Arten von Zertifikats-Fingerabdrücken angezeigt: „Release“ und „ Debug“ . Beim Generieren der Konfigurationsdatei ist es besser, den Debug -Zertifikats-Fingerabdruck zu verwenden. Danach müssen Sie zum Google Credentials Manager gehen und ihn manuell erstellen einen Berechtigungsnachweis für den OAuth2-Client mit Ihrem Release -Zertifikat-Fingerabdruck. Dies ist für Ihre Anwendungsarbeit sowohl an Entwicklungs- als auch an Produktionsversionen erforderlich. $ keytool -exportcert -keystore <path-to-debug-or-production-keystore> -list -v -alias <alias-name>
Bei der Anmeldung unter Android werden die auf dem Gerät des Benutzers angemeldeten Konten verwendet.
Um die Google Play Services-Version einzurichten, können Sie den Parameter PLAY_SERVICES_VERSION verwenden (standardmäßig mit dem Wert 11.8.0). Dies ist nützlich, um Konflikte mit anderen Plugins zu vermeiden, die eine andere Version des Google Play-Dienstes verwenden, da es sich dabei um dieselbe Version handeln MUSS.
Google signiert Ihre App erneut mit einem anderen Zertifikat, wenn Sie sie im Play Store veröffentlichen. Sobald Ihre App veröffentlicht ist, kopieren Sie den SHA-1-Fingerabdruck des „App-Signaturzertifikats“, das Sie im Abschnitt „App-Signatur“ unter „Release-Management“ in der Google Play Console finden. Fügen Sie diesen Fingerabdruck in die Release OAuth-Client-ID im Google Credentials Manager ein.
Wenn Sie vom Anmeldevorgang ein idToken
oder serverAuthCode
zurückerhalten möchten, müssen Sie die Client-ID für die Webanwendung Ihres Projekts übergeben. Diese finden Sie auf der Seite mit den API-Anmeldeinformationen Ihres Projekts in der Google Developers Console.
Dieses Plugin ist kompatibel mit:
So funktioniert es (sichern Sie zuerst Ihr Projekt!):
Verwenden der Cordova-CLI und npm:
$ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
Verwenden der Cordova-CLI, um die neueste Version von GitHub abzurufen:
$ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
WICHTIG:
Bitte beachten Sie, dass myreversedclientid
ein Platzhalter für die umgekehrte clientId ist, die Sie in Ihrer iOS-Konfigurationsdatei finden. Umgeben Sie diesen Wert nicht in Anführungszeichen. (Nur iOS-Anwendungen)
Wenn Sie eine Hybridanwendung (iOS und Android) oder eine Android-Anwendung erstellen, müssen Sie myreversedclientid
durch den umgekehrten Wert der Client-ID in Ihren in Schritt 3 generierten Release- Anmeldeinformationen in der Google Developers Console ersetzen. Dies lautet: „com .googleusercontent.apps. uniqueId
" , ohne Anführungszeichen. Beispiel: „123-abc123.apps.googleusercontent.com“ wird zu „com.googleusercontent.apps.123-abc123“.
myreversedclientid
ist ein Platzhalter für die OAuth-Client-ID, die speziell für Webanwendungen in Ihrer Google Developers Console generiert wird.
GooglePlus.js wird automatisch eingebunden. Es besteht keine Notwendigkeit, etwas in Ihrem HTML zu ändern oder hinzuzufügen.
Fügen Sie dies Ihrer config.xml hinzu:
Für die (stabile) NPM-Version:
< plugin name = " cordova-plugin-googleplus " source = " npm " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
</ plugin >
Für die neueste Version von Git (nicht empfohlen):
< plugin spec = " https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git " source = " git " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
< plugin >
Dieses Plugin verwendet den CocoaPods-Abhängigkeitsmanager, um die Abhängigkeiten der iOS Google SignIn SDK-Bibliothek zu erfüllen.
Stellen Sie daher bitte sicher, dass Cocoapods in Ihrer iOS-Build-Umgebung installiert ist – Anweisungen zur Einrichtung finden Sie hier. Stellen Sie außerdem sicher, dass Ihr lokales Cocoapods-Repo auf dem neuesten Stand ist, indem Sie pod repo update
ausführen.
Wenn Sie Ihr Projekt in Xcode erstellen, müssen Sie YourProject.xcworkspace
(nicht YourProject.xcodeproj
) öffnen, damit sowohl Ihr Cordova-App-Projekt als auch das Pods-Projekt in Xcode geladen werden.
Sie können die Pod-Abhängigkeiten in Ihrem Cordova iOS-Projekt auflisten, indem Sie Cocoapods-Abhängigkeiten installieren:
sudo gem install cocoapods-dependencies
cd platforms/ios/
pod dependencies
Schauen Sie sich die Demo-App an, um schnell loszulegen, oder verletzen Sie sich selbst und befolgen Sie diese Schritte.
Beachten Sie, dass keine dieser Methoden aufgerufen werden sollte, bevor deviceready
ausgelöst wurde.
Beispiel:
document . addEventListener ( 'deviceready' , deviceReady , false ) ;
function deviceReady ( ) {
//I get called when everything's ready for the plugin to be called!
console . log ( 'Device is ready!' ) ;
window . plugins . googleplus . trySilentLogin ( ... ) ;
}
31.03.16: Diese Methode muss nicht mehr zuerst überprüft werden. Es wird aus Gründen der Code-Orthoganität beibehalten.
Die Anmeldefunktion führt den Benutzer durch den Google Auth-Prozess. Alle Parameter sind optional, es gibt jedoch einige Einschränkungen.
Um ein idToken
auf Android zu erhalten, müssen Sie Ihre webClientId
übergeben (ein häufiger Fehler besteht darin, die Android-Client-ID anzugeben). Unter iOS ist das idToken
standardmäßig im Anmeldeergebnis enthalten.
Um einen serverAuthCode
zu erhalten, müssen Sie Ihre webClientId
übergeben und offline
auf true setzen. Wenn offline wahr ist, aber keine webClientId bereitgestellt wird, wird der serverAuthCode
NICHT angefordert.
Die angeforderten Standardbereiche sind profile
und email
(immer angefordert). Um andere Bereiche anzufordern, fügen Sie diese als durch Leerzeichen getrennte Liste zum Parameter scopes
hinzu. Sie werden genau so angefordert, wie sie übergeben wurden. Informationen zu gültigen Bereichen, die angefordert werden können, finden Sie in der Google Scopes-Dokumentation. Beispiel: 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'
.
Um zusätzliche Bereiche oder APIs nutzen zu können, müssen diese natürlich in der Entwicklerkonsole Ihres Projekts aktiviert werden.
window . plugins . googleplus . login (
{
'scopes' : '... ' , // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
Der Erfolgsrückruf (zweites Argument) erhält ein JSON-Objekt mit folgendem Inhalt, mit Beispieldaten meines Google-Kontos:
obj . email // '[email protected]'
obj . userId // user id
obj . displayName // 'Eddy Verbruggen'
obj . familyName // 'Verbruggen'
obj . givenName // 'Eddy'
obj . imageUrl // 'http://link-to-my-profilepic.google.com'
obj . idToken // idToken that can be exchanged to verify user identity.
obj . serverAuthCode // Auth code that can be exchanged for an access token and refresh token for offline access
obj . accessToken // OAuth2 access token
Zusätzliche Benutzerinformationen sind je nach Anwendungsfall verfügbar. Fügen Sie die benötigten Bereiche zur Option „scopes“ hinzu und geben Sie dann die Informationen an das Ergebnisobjekt zurück, das in den Funktionen handleSignInResult
und didSignInForUser
auf Android bzw. iOS erstellt wird.
Unter Android erhält der Fehlerrückruf (drittes Argument) einen Fehlerstatuscode, wenn die Authentifizierung nicht erfolgreich war. Eine Beschreibung dieser Statuscodes finden Sie auf der Android-Entwickler-Website von Google unter GoogleSignInStatusCodes.
Unter iOS enthält der Fehlerrückruf eine NSError localizedDescription.
Sie können trySilentLogin
aufrufen, um zu überprüfen, ob sie bereits bei der App angemeldet sind, und sie gegebenenfalls stillschweigend anmelden.
Wenn dies erfolgreich ist, erhalten Sie dasselbe Objekt wie die login
. Wenn dies jedoch fehlschlägt, wird dem Benutzer das Authentifizierungsdialogfeld nicht angezeigt.
Der Aufruf trySilentLogin
erfolgt bis auf den Funktionsnamen genauso wie login
.
window . plugins . googleplus . trySilentLogin (
{
'scopes' : '... ' , // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true , // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
Es wird dringend empfohlen, trySilentLogin mit denselben Optionen wie login zu implementieren, um mögliche Komplikationen zu vermeiden.
Dadurch wird das OAuth2-Token gelöscht.
window . plugins . googleplus . logout (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
Dadurch wird das OAuth2-Token gelöscht, Sie vergessen, welches Konto für die Anmeldung verwendet wurde, und dieses Konto wird von der App getrennt. Dies erfordert, dass der Benutzer bei der nächsten Anmeldung den App-Zugriff erneut erlaubt. Beachten Sie, dass dieser Effekt nicht immer sofort eintritt. Es kann einige Zeit dauern, bis die Verbindung vollständig getrennt ist.
window . plugins . googleplus . disconnect (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
idToken
Google-Dokumentation zur Authentifizierung mit einem Backend-Server
Wie in den obigen Artikeln erwähnt, kann das idToken
gegen Benutzerinformationen ausgetauscht werden, um die Identität des Benutzers zu bestätigen.
Hinweis: Google möchte nicht, dass Benutzeridentitätsdaten direkt an einen Server gesendet werden. Das idToken ist ihre bevorzugte Methode zum sicheren Senden dieser Daten, da diese zum Entpacken über ihre Server überprüft werden müssen.
Dies hat mehrere Verwendungsmöglichkeiten. Auf der Clientseite kann es eine Möglichkeit sein, die Benutzeridentität doppelt zu bestätigen, oder es kann verwendet werden, um Details wie die E-Mail-Hostdomäne abzurufen. Auf der Serverseite kommt das idToken
wirklich voll zur Geltung. Dies ist eine einfache Möglichkeit, die Identität des Benutzers zu bestätigen, bevor ihm der Zugriff auf die Ressourcen dieses Servers gewährt wird oder bevor der serverAuthCode
gegen ein Zugriffs- und Aktualisierungstoken ausgetauscht wird (siehe nächster Abschnitt).
Wenn Ihre Serverseite nur eine Identität und keinen zusätzlichen Kontozugriff benötigt, ist dies eine sichere und einfache Möglichkeit, diese Informationen bereitzustellen.
serverAuthCode
Google-Dokumentation zum Aktivieren des serverseitigen Zugriffs
Wie in den obigen Artikeln erwähnt, ist der serverAuthCode
ein Element, das gegen ein Zugriffs- und Aktualisierungstoken ausgetauscht werden kann. Im Gegensatz zum idToken
ermöglicht dies serverseitig den direkten Zugriff auf das Google-Konto des Benutzers.
Nur bei der ersten Anmeldeanforderung wird serverAuthCode
zurückgegeben. Wenn Sie den Token ein zweites Mal erhalten möchten, können Sie dies tun, indem Sie sich zunächst abmelden.
Bei diesem Austausch haben Sie mehrere Möglichkeiten: Sie können die Google REST Apis verwenden, um diese in der Hybrid-App selbst abzurufen, oder Sie können den Code mit der erforderlichen Methode an Ihren Backend-Server senden, um ihn dort auszutauschen (Google stellt Beispiele bereit). für Java, Python und JS/HTTP).
Wie bereits erwähnt, dreht sich bei diesem Plugin alles um die Benutzerauthentifizierung und -identität. Daher muss jede darüber hinausgehende Nutzung des Benutzerkontos pro Anwendungsfall und pro Anwendung implementiert werden.
F: Ich kann die Authentifizierung auf Android nicht zum Laufen bringen. Und warum gibt es keinen ANDROID-API-SCHLÜSSEL?
A: Unter Android müssen Sie die keytool
-Schritte ausführen. Weitere Informationen finden Sie in den Installationsanweisungen.
F: Nachdem ich die keytool
Schritte befolgt habe, kann ich die Authentifizierung unter Android immer noch nicht durchführen. Ich habe einen „10-Fehler“!!!
A: Sie müssen das SHA 1-Zertifikat aus Ihrer APK-Datei beziehen. Führen Sie Folgendes aus: keytool -list -printcert -jarfile <your apk>
und kopieren Sie den SHA 1 in Ihre Android-Client-ID in der Google Console.
F: OMG $@#*! Der Android-Build schlägt fehl
A: Im Android SDK-Manager müssen das Android Support Repository und die Android Support Library installiert sein. Stellen Sie sicher, dass Sie eine ziemlich aktuelle Version davon verwenden.
F: Warum funktioniert das nicht auf meinem Android-Emulator???
A: Stellen Sie sicher, dass Sie ein virtuelles Gerät verwenden, das mit einem Google APIs-Ziel und/oder einer Google APIs-CPU läuft!
F: Ich erhalte Fehler 10 , was kann ich tun?
A: Dies liegt wahrscheinlich daran, dass Cordova nicht den Schlüsselspeicher verwendet, den Sie verwenden möchten (z. B. weil Sie Ihren eigenen erstellt haben). Bitte lesen Sie unter https://cordova.apache.org/docs/en/latest/guide/platforms/android/#signing-an-app nach, wie das geht. Einige haben berichtet, dass Sie cordova clean
ausführen müssen, bevor Sie den Build ausführen, um Fehler 10 zu beheben.
F: Ich erhalte Fehler 16 , was kann ich tun?
A: Dies ist immer ein Problem, da die Signatur (oder der Fingerabdruck) Ihrer Android-App, wenn sie signiert ist, nicht zur OAuth-Whitelist der Google-Konsole (oder Firebase) hinzugefügt wird. Bitte überprüfen Sie noch einmal, ob Sie alles dafür getan haben. Sehen Sie sich den Mini-Guide unten an.
Stellen Sie zunächst sicher, dass Sie die Anleitung zum App-Signieren in der Android-Dokumentation vollständig gelesen und verstanden haben!
Überprüfen Sie nach/während des Lesens noch einmal, ob Sie alle Schritte 1–4 unten richtig ausgeführt haben:
Um Ihre App zu signieren (beim Entwickeln oder Veröffentlichen), müssen Sie einen lokalen Keystore und einen Schlüssel mit Android Studio oder über ein Terminal erstellen. Google verfügt über eine Funktion namens „Google Play App Signing“, bei der der Schlüssel auf seinem Server gespeichert wird und Ihre App für Sie signiert wird. Wenn Sie diese Funktion jedoch verwenden oder nicht, benötigen Sie in jedem Fall einen lokalen Schlüsselspeicher und Schlüssel.
Ihr lokaler Keystore und Ihr Schlüssel sind Ihr offizieller App-Signaturschlüssel.
Sie müssen die folgenden wichtigen Fingerabdrücke (im SHA1-Format) in den Google OAuth-Einstellungen auf die Whitelist setzen:
debug.keystore
Ihr lokaler Keystore und Schlüssel sind Ihr „Upload-Schlüssel“, und ein weiterer Schlüssel für den offiziellen „App-Signaturschlüssel“ wird von Google erstellt und verwaltet.
Sie müssen die folgenden wichtigen Fingerabdrücke (im SHA1-Format) in den Google OAuth-Einstellungen auf die Whitelist setzen:
debug.keystore
Holen Sie sich die Fingerabdrücke der oben genannten Schlüssel (im SHA1-Format), um sie auf die Whitelist setzen zu können.
Gehen Sie für den Android-Standard debug.keystore
wie folgt vor:
keytool -exportcert -keystore /Users/myusername/.android/debug.keystore -list -v
Sie sehen den SHA1-Fingerabdruck für den Debug-Schlüssel im Terminal. Kopieren Sie das.
Gehen Sie für den selbst erstellten Keystore mit Schlüssel (entweder für 2A oder 2B) wie folgt vor:
keytool -exportcert -keystore /path/to/your/key/yourKeystoreFile.keystore -list -v
Sie sehen den SHA1-Fingerabdruck für den Debug-Schlüssel im Terminal. Kopieren Sie das.
Nur wenn Google Play App Signing aktiviert ist (für 2B). Den Schlüssel, den Google zum Signieren Ihrer Builds verwendet, finden Sie in der Google Play Console.
Voraussetzung: Sie müssen die grundlegenden Informationen zu Ihrer Android-App fertiggestellt haben und anschließend ein signiertes APK für interne Tests hochladen. Sobald dies hochgeladen ist, können Sie auf das folgende Menü zugreifen:
Gehen Sie zu Release Management > App-Signatur. Da wirst du sehen
Die Option „Hochladen“ ist (und sollte) dieselbe wie Taste B. oben. Und das „App-Signaturzertifikat“ ist der Schlüssel, den Google verwenden wird. Kopieren Sie dieses.
Auch hier haben wir zwei Möglichkeiten, sie auf die Whitelist zu setzen. Projekte, die nur die Google Cloud Platform verwenden, oder Projekte, die Firebase verwenden.
(Falls Sie auch Firebase verwenden, können Sie diesen Schritt überspringen)