ARCore API in Google Cloud verwenden

Plattform auswählen:

Für ARCore-Funktionen wie die Geospatial API und Cloud Anchors wird die in Google Cloud gehostete ARCore API verwendet. Bei der Nutzung dieser Funktionen greift Ihre Anwendung mithilfe von Anmeldedaten auf den ARCore API-Dienst zu.

In dieser Kurzanleitung wird beschrieben, wie Sie Ihre Anwendung so einrichten, dass sie mit dem in Google Cloud gehosteten ARCore API-Dienst kommunizieren kann.

Neues Google Cloud-Projekt erstellen oder ein vorhandenes Projekt verwenden

Wenn Sie ein vorhandenes Projekt haben, wählen Sie es aus.

Zur Projektauswahl

Wenn Sie noch kein Google Cloud-Projekt haben, erstellen Sie eines.

Neues Projekt erstellen

ARCore API aktivieren

Wenn Sie die ARCore API verwenden möchten, müssen Sie sie in Ihrem Projekt aktivieren.

ARCore API aktivieren

Autorisierungsmethode einrichten

Für die Kommunikation einer Unity-Anwendung mit der ARCore API stehen zwei verschiedene Autorisierungsmethoden zur Verfügung: die schlüssellose Autorisierung (empfohlen) und die API-Schlüsselautorisierung:

  • Unter Android verwendet die schlüssellose Autorisierung eine Kombination aus dem Paketnamen der App und dem Fingerabdruck des Signaturschlüssels, um Ihre App zu autorisieren.

    Unter iOS wird bei der schlüssellosen Autorisierung ein signiertes Token verwendet, um den Zugriff auf die API zu steuern. Für diese Methode ist ein Server erforderlich, der Ihnen gehört, um Tokens zu signieren und den Zugriff auf die API zu steuern.

  • Ein API-Schlüssel ist ein String, der ein Google Cloud-Projekt identifiziert. API-Schlüssel gelten im Allgemeinen nicht als sicher, da sie normalerweise für Clients zugänglich sind. Du kannst die schlüssellose Autorisierung verwenden, um mit der ARCore API zu kommunizieren.

Schlüsselloser

Erstellen Sie OAuth 2.0-Client-IDs, um die Anwendung mit der schlüssellosen Authentifizierung zu autorisieren.

Fingerabdrücke für Signaturschlüssel ermitteln

Bei einer OAuth 2.0-Client-ID wird die Anwendung anhand des Signaturschlüssel-Fingerabdrucks identifiziert.

Signatur-Fingerabdruck zur Fehlerbehebung abrufen

Beim Ausführen oder Debuggen Ihres Projekts signieren die Android SDK-Tools deine App automatisch mit einem generierten Debug-Zertifikat.

Rufen Sie mit dem folgenden Befehl den Fingerabdruck des Debug-Zertifikats ab.

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Windows
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

Das Dienstprogramm keytool fordert Sie zur Eingabe eines Passworts für den Schlüsselspeicher auf. Das Standardpasswort für den Keystore zur Fehlerbehebung lautet android. Das keytool-Dienstprogramm gibt dann den Fingerabdruck an das Terminal aus. Beispiel:

   Certificate fingerprint: SHA1: <strong>DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

Signierenden Fingerabdruck von einem Schlüsselspeicher abrufen

Wenn Sie eine Schlüsselspeicherdatei haben, verwenden Sie das Dienstprogramm keytool, um den Fingerabdruck zu ermitteln.

keytool -list -v -alias your-key-name -keystore path-to-production-keystore

Das keytool-Dienstprogramm gibt den Fingerabdruck dann im Terminal aus. Beispiel:

   Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

So erhalten Sie den Signaturschlüssel Ihrer App über Play App Signing

Wenn du Play App-Signatur verwendest, verwaltet Google den Signaturschlüssel deiner App und verwendet ihn zum Signieren deiner APKs. Dieser Schlüssel wird für den signierenden Fingerabdruck verwendet.

  1. Scrollen Sie in der Google Play Console auf der Seite App-Signatur zu Zertifikat für den App-Signaturschlüssel.
  2. Verwenden Sie den Fingerabdruck des SHA-1-Zertifikats.

OAuth 2.0-Client-IDs erstellen

Erstellen Sie für jeden anwendbaren Signaturschlüssel aus den vorherigen Schritten eine OAuth 2.0-Client-ID in den Anmeldedaten Ihres Google Cloud-Projekts.

  • Öffnen Sie in Google Cloud die Seite „Anmeldedaten“.

    Anmeldedaten

  • Klicken Sie auf Anmeldedaten erstellen und wählen Sie dann im Menü die Option OAuth-Client-ID aus.

  • Füllen Sie die erforderlichen Felder so aus:

    • Anwendungstyp: Wählen Sie Android aus.
    • Paketname: Verwenden Sie den in Ihrer AndroidManifest.xml deklarierten Paketnamen.
    • SHA-1-Zertifikat-Fingerabdruck: Verwenden Sie einen Fingerabdruck, den Sie in den vorherigen Schritten erhalten haben.
  • Klicken Sie auf Erstellen.

Erforderliche Bibliotheken einschließen

  1. Fügen Sie com.google.android.gms:play-services-auth:16+ in die Abhängigkeiten Ihrer App ein.
  2. Wenn Sie eine Komprimierung von Code verwenden, fügen Sie diese der Datei build.gradle Ihrer Anwendung hinzu:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. Fügen Sie der Datei proguard-rules.pro Ihrer Anwendung Folgendes hinzu:

    -keep class com.google.android.gms.common.** { *; }
    -keep class com.google.android.gms.location.** { *; }
    -keep class com.google.android.gms.auth.** { *; }
    -keep class com.google.android.gms.tasks.** { *; }
    

Ihre Anwendung ist jetzt für die Verwendung der schlüssellosen Authentifizierung konfiguriert.

Schlüsselloser

ARCore unterstützt die Autorisierung von API-Aufrufen in iOS mit einem JSON Web Token. Das Token muss von einem Google-Dienstkonto signiert werden.

Zum Generieren von Tokens für iOS benötigen Sie einen Endpunkt auf Ihrem Server, der die folgenden Anforderungen erfüllt:

  • Ihr eigener Autorisierungsmechanismus muss den Endpunkt schützen.

  • Der Endpunkt muss jedes Mal ein neues Token generieren, z. B.:

    • Jeder Nutzer erhält ein eindeutiges Token.
    • Tokens laufen nicht sofort ab.

Dienstkonto und Signaturschlüssel erstellen

So erstellen Sie ein Google-Dienstkonto und einen Signaturschlüssel:

  1. Öffnen Sie in Google Cloud die Seite „Anmeldedaten“.
    Anmeldedaten
  2. Klicken Sie auf Anmeldedaten erstellen > Dienstkonto.
  3. Geben Sie unter Dienstkontodetails einen Namen für das neue Konto ein und klicken Sie dann auf Erstellen.
  4. Öffnen Sie auf der Seite „Dienstkontoberechtigungen“ das Drop-down-Menü Rolle auswählen. Wählen Sie Dienstkonten > Ersteller von Dienstkonto-Tokens aus und klicken Sie auf „Weiter“.
  5. Klicken Sie auf der Seite Nutzern Zugriff auf dieses Dienstkonto erteilen auf „Fertig“.
  6. Suchen Sie auf der Seite Anmeldedaten den Abschnitt „Dienstkonten“ und klicken Sie auf den Namen des gerade erstellten Kontos.
  7. Scrollen Sie auf der Seite Dienstkontodetails nach unten zum Abschnitt „Schlüssel“ und wählen Sie Schlüssel hinzufügen > Neuen Schlüssel erstellen aus.
  8. Wählen Sie als Schlüsseltyp JSON aus und klicken Sie auf Erstellen.

    Dadurch wird eine JSON-Datei mit dem privaten Schlüssel auf Ihren Computer heruntergeladen. Speichern Sie die heruntergeladene JSON-Schlüsseldatei an einem sicheren Ort.

Tokens auf Ihrem Server erstellen

Verwenden Sie zum Erstellen neuer Tokens (JWTs) auf Ihrem Server die standardmäßigen JWT-Bibliotheken und die JSON-Datei, die Sie sicher von Ihrem neuen Dienstkonto heruntergeladen haben.

Tokens auf dem Entwicklungscomputer erstellen

Verwenden Sie den folgenden oauth2l-Befehl, um JWTs auf Ihrem Entwicklungscomputer zu generieren:

oauth2l fetch --cache "" --jwt --json $KEYFILE --audience "https://arcore.googleapis.com/"

Mit dem Flag --cache muss ein leerer Cache-Speicherort angegeben werden, damit jedes Mal ein anderes Token generiert wird. Vergessen Sie nicht, den resultierenden String zu kürzen. Zusätzliche Leerzeichen oder Zeilenumbrüche führen dazu, dass die API das Token ablehnt.

Token signieren

Du musst den RS256-Algorithmus und die folgenden Anforderungen verwenden, um das JWT zu signieren:

  • iss: Die E-Mail-Adresse des Dienstkontos.
  • sub: Die E-Mail-Adresse des Dienstkontos.
  • iat: Die Unix-Epochen-Zeit in Sekunden, zu der das Token generiert wurde.
  • exp: iat + 3600 (1 Stunde). Die Unix-Epochen-Zeit in Sekunden, zu der das Token abläuft.
  • aud: Die Zielgruppe. Er muss auf https://arcore.googleapis.com/ festgelegt werden.

Nicht standardmäßige Anforderungen sind in der JWT-Nutzlast nicht erforderlich. Die uid-Anforderung kann jedoch nützlich sein, um den entsprechenden Nutzer zu identifizieren.

Wenn Sie zum Generieren Ihrer JWTs einen anderen Ansatz verwenden, z. B. eine Google API in einer von Google verwalteten Umgebung, müssen Sie Ihre JWTs mit den Anforderungen in diesem Abschnitt signieren. Stellen Sie vor allem sicher, dass die Zielgruppe korrekt ist.

Token in der ARCore-Sitzung übergeben

  1. Die iOS-Authentifizierungsstrategie muss auf AuthenticationToken festgelegt sein. Rufen Sie in Unity Bearbeiten > Projekteinstellungen > XR-Plug-in-Verwaltung > ARCore-Erweiterungen auf. Wählen Sie im Drop-down-Menü iOS-Authentifizierungsstrategie die Option Authentifizierungstoken aus.
  2. Wenn Sie ein Token erhalten, übergeben Sie es mit ARAnchorManager.SetAuthToken() an Ihre ARCore-Sitzung:

    // Designate the token to authorize ARCore API calls
    // on the iOS platform. This should be called each time the application's token is refreshed.
    ARAnchorManager.SetAuthToken(authToken);
    

Ihre Anwendung ist jetzt für die Verwendung der schlüssellosen Authentifizierung konfiguriert.

Beachten Sie Folgendes, wenn Sie ein Token an die Sitzung übergeben:

  • Wenn Sie die Sitzung mit einem API-Schlüssel erstellt haben, ignoriert ARCore das Token und protokolliert einen Fehler.

    Wenn Sie den API-Schlüssel nicht mehr benötigen, löschen Sie ihn in der Google Developers Console und entfernen Sie ihn aus Ihrer App.

  • ARCore ignoriert Tokens, die Leerzeichen oder Sonderzeichen enthalten.

  • Tokens laufen in der Regel nach einer Stunde ab. Wenn die Möglichkeit besteht, dass Ihr Token während der Verwendung abläuft, fordern Sie ein neues Token an und übergeben Sie es an die API.

API-Schlüssel

  1. Öffnen Sie in Google Cloud die Seite „Anmeldedaten“.
    Anmeldedaten
  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie im Menü API-Schlüssel aus.
    Im Dialogfeld „API-Schlüssel erstellt“ wird der String für den neu erstellten Schlüssel angezeigt.
  3. Gehen Sie in Unity zu Bearbeiten > Projekteinstellungen > XR-Plug-in-Verwaltung > ARCore-Erweiterungen. Wählen Sie für jede Zielplattform (Android, iOS) im Drop-down-Menü Authentifizierungsstrategie die Option API-Schlüssel aus. Fügen Sie dann Ihren API-Schlüssel in die entsprechenden Felder ein.

  4. Informationen zur Sicherung des API-Schlüssels finden Sie in der Dokumentation zu Einschränkungen für API-Schlüssel.

Ihre App ist jetzt für die Verwendung von API-Schlüsseln konfiguriert.

Nächste Schritte

Wenn die Autorisierung konfiguriert ist, kannst du die folgenden ARCore-Funktionen ausprobieren: