Korzystanie z interfejsu ARCore API w Google Cloud

Wybierz platformę:

Funkcje ARCore, takie jak narzędzia geoprzestrzenne API i Cloud Anchors używają interfejsu API Interfejs ARCore API hostowany w Google Cloud. Podczas korzystania z tych funkcji aplikacja używa danych logowania, aby uzyskać dostęp do usługi ARCore API.

W tym krótkim wprowadzeniu dowiesz się, jak skonfigurować aplikację, aby mogła komunikują się z usługą ARCore API hostowaną w Google Cloud.

Utwórz nowy projekt Google Cloud lub użyj istniejącego projektu

Jeśli masz już projekt, wybierz go.

Otwórz selektor projektów

Jeśli nie masz jeszcze projektu Google Cloud, utwórz go.

Utwórz nowy projekt

Włączanie interfejsu ARCore API

Aby używać interfejsu ARCore API, musisz włączyć go w swoim projekcie.

Włączanie interfejsu ARCore API

Konfigurowanie metody autoryzacji

Aplikacja Unity może komunikować się z interfejsem ARCore API za pomocą dwóch różnych metody autoryzacji: autoryzacja bez klucza, i autoryzacja klucza interfejsu API:

  • W Androidzie autoryzacja bez klucza używa kombinacji nazwy pakietu aplikacji oraz odcisk cyfrowy klucza podpisywania, który pozwoli na autoryzację aplikacji.

    W systemie iOS autoryzacja bez klucza używa tokena podpisanego do kontroli dostępu do interfejsu API. Ten wymaga serwera należącego do Ciebie do podpisywania tokenów i kontroli dostępu do interfejs API.

  • Klucz interfejsu API to ciąg znaków identyfikujący projekt Google Cloud. Klucze interfejsu API są zwykle nie są uznawane za bezpieczne, ponieważ są zazwyczaj dostępne dla klientów. Rozważ użycie autoryzacji bez klucza do komunikacji z interfejsem ARCore API.

Bezkluczykowe

Aby autoryzować aplikację za pomocą uwierzytelniania bez klucza, utwórz klienta OAuth 2.0 Identyfikatory.

Określanie odcisków cyfrowych klucza podpisywania

Identyfikator klienta OAuth 2.0 używa odcisku cyfrowego klucza podpisywania aplikacji do identyfikowania .

Jak uzyskać odcisk cyfrowy podpisywania debugowania

Podczas uruchamiania lub debugowania projektu narzędzia Android SDK automatycznie podpisują aplikację za pomocą wygenerowanego certyfikatu debugowania.

Aby pobrać odcisk cyfrowy certyfikatu debugowania, użyj tego polecenia.

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

Narzędzie keytool poprosi o wpisanie hasła do magazynu kluczy. domyślne hasło magazynu kluczy debugowania to android. Następnie narzędzie keytool drukuje odcisk palca w terminalu. Na przykład:

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

Jak uzyskać odcisk cyfrowy podpisywania z magazynu kluczy

Jeśli masz plik magazynu kluczy, użyj narzędzia keytool, aby określić odcisk cyfrowy.

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

Następnie narzędzie keytool wydrukuje odcisk palca w terminalu. Na przykład:

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

Jak uzyskać klucz podpisywania aplikacji z usługi podpisywania aplikacji przez Google Play

Jeśli używasz podpisywania aplikacji przez Google Play, Google zarządza kluczem podpisywania aplikacji i używa go do podpisywania plików APK. Ten klucz powinien być używany jako odcisk cyfrowy podpisywania.

  1. Na stronie podpisywania aplikacji w Konsoli Google Play przewiń do sekcji Certyfikat klucza podpisywania aplikacji.
  2. Użyj odcisku cyfrowego certyfikatu SHA-1.

Tworzenie identyfikatorów klienta OAuth 2.0

Dla każdego odpowiedniego klucza podpisywania z poprzednich kroków utwórz identyfikator klienta OAuth 2.0 w Dane logowania projektu Google Cloud.

  • W Google Cloud otwórz stronę Dane logowania.

    Dane logowania

  • Kliknij Utwórz dane logowania i w menu wybierz Identyfikator klienta OAuth.

  • Wypełnij wymagane pola w następujący sposób:

    • Typ aplikacji: wybierz Android.
    • Nazwa pakietu: użyj nazwy pakietu zadeklarowanej w pliku AndroidManifest.xml.
    • Odcisk cyfrowy certyfikatu SHA-1: użyj odcisku cyfrowego uzyskany w poprzednich krokach.
  • Kliknij Utwórz.

Uwzględnij wymagane biblioteki

  1. Uwzględnij com.google.android.gms:play-services-auth:16+ w zależnościach aplikacji.
  2. Jeśli używasz minifikacji kodu, dodaj je do pliku build.gradle aplikacji:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. Do pliku proguard-rules.pro aplikacji dodaj te informacje:

    -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.** { *; }
    

Aplikacja jest teraz skonfigurowana do korzystania z uwierzytelniania bez klucza.

Bezkluczykowe

ARCore obsługuje autoryzację wywołań interfejsu API w iOS za pomocą (przeglądarki JSON) ). Token musi być podpisany przez Google Konto usługi.

Aby generować tokeny na iOS, na serwerze musisz mieć punkt końcowy spełniające te wymagania:

  • Punkt końcowy musi chronić Twój własny mechanizm autoryzacji.

  • Punkt końcowy musi za każdym razem generować nowy token, na przykład:

    • Każdy użytkownik otrzymuje unikalny token.
    • Tokeny nie wygasają od razu.

Tworzenie konta usługi i klucza podpisywania

Aby utworzyć konto usługi Google i klucz podpisywania, wykonaj te czynności:

  1. W Google Cloud otwórz stronę Dane logowania.
    Dane logowania
  2. Kliknij Utwórz dane logowania > Konto usługi.
  3. W sekcji Szczegóły konta usługi wpisz nazwę nowego konta i kliknij Utwórz.
  4. Na stronie Uprawnienia konta usługi otwórz menu Wybierz rolę. Wybierz Konta usługi > Twórca tokenów konta usługi, a następnie kliknij Kontynuuj.
  5. Na stronie Przyznaj użytkownikom dostęp do tego konta usługi kliknij Gotowe.
  6. na stronie Dane logowania, znajdź sekcję Konta usługi i kliknij nazwę konta. który właśnie utworzył.
  7. Na stronie Szczegóły konta usługi przewiń w dół do sekcji Klucze. wybierz Add Key > (Dodaj klucz) > Utwórz nowy klucz.
  8. Jako typ klucza wybierz JSON i kliknij Utwórz.

    Spowoduje to pobranie na Twój komputer pliku JSON zawierającego klucz prywatny. Sklep pobranego klucza JSON w bezpiecznej lokalizacji.

Tworzenie tokenów na serwerze

Aby utworzyć nowe tokeny (JWT) na serwerze, użyj standardowego tokena JWT biblioteki oraz plik JSON bezpiecznie pobrany z nowego konta usługi.

Tworzenie tokenów na komputerze, którego używasz do programowania

Aby wygenerować tokeny JWT w maszynie programistycznej, użyj tego kodu Polecenie oauth2l:

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

Określenie pustej lokalizacji pamięci podręcznej za pomocą flagi --cache jest niezbędne, aby aby za każdym razem był generowany inny token. Pamiętaj, aby przyciąć ciągu znaków. Dodatkowe spacje lub znaki nowego wiersza spowodują, że interfejs API odrzuć token.

Podpisz token

Aby podpisać token JWT, musisz użyć algorytmu RS256 i poniższych deklaracji:

  • iss – adres e-mail konta usługi.
  • sub – adres e-mail konta usługi.
  • iat – czas uniksowy w sekundach, w którym wygenerowano token.
  • expiat + 3600 (1 godzina). czas uniksowy, w którym wygasa token; w kilka sekund.
  • aud – grupa odbiorców. Musi być ustawiona na https://arcore.googleapis.com/

Niestandardowe deklaracje nie są wymagane w ładunku JWT, ale może się okazać, że twierdzenie uid przydatne do identyfikacji odpowiedniego użytkownika.

Jeśli używasz innego sposobu generowania tokenów JWT, na przykład interfejsu Google API w środowisku zarządzanym przez Google; pamiętaj, aby podpisać tokeny JWT za pomocą deklaracji w tej sekcji. Przede wszystkim upewnij się, że odbiorcy są poprawnymi.

Przekaż token w sesji ARCore

  1. Upewnij się, że Strategia uwierzytelniania w iOS jest ustawiona na AuthenticationToken. W Unity kliknij Edit (Edytuj) > Ustawienia projektu > Zarządzanie wtyczkami XR > Rozszerzenia ARCore. W menu Strategia uwierzytelniania w iOS wybierz opcję Token uwierzytelniania.
  2. Po uzyskaniu tokena przekaż go do sesji ARCore za pomocą ARAnchorManager.SetAuthToken():

    // 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);
    

Aplikacja jest teraz skonfigurowana do korzystania z uwierzytelniania bez klucza.

Przekazując token do sesji, pamiętaj o tych kwestiach:

  • Jeśli do utworzenia sesji użyjesz klucza interfejsu API, ARCore zignoruje token i zarejestrują błąd.

    Jeśli nie potrzebujesz już klucza interfejsu API, usuń go na stronie Google Developers konsolę i usuń ją z .

  • ARCore ignoruje tokeny zawierające spacje lub znaki specjalne.

  • Tokeny zwykle tracą ważność po godzinie. Jeśli istnieje możliwość, że może wygasnąć podczas używania, uzyskać nowy token i przekazać go do interfejsu API.

Klucz interfejsu API

  1. W Google Cloud otwórz stronę Dane logowania.
    Dane logowania
  2. Kliknij Utwórz dane logowania i w menu wybierz Klucz interfejsu API.
    Okno utworzenia klucza interfejsu API wyświetla ciąg znaków dla nowo utworzonego klucza.
  3. W Unity kliknij Edit (Edytuj) > Ustawienia projektu > Zarządzanie wtyczkami XR > Rozszerzenia ARCore. W przypadku każdej platformy docelowej (Android, iOS) w Z menu Authentication Strategy (Strategia uwierzytelniania) wybierz opcję API Key (Klucz interfejsu API). Następnie: wstawić klucz interfejsu API w polach klucza interfejsu API.

  4. Zapoznaj się z dokumentacją dotyczącą ograniczeń klucza interfejsu API. aby zabezpieczyć klucz interfejsu API.

Twoja aplikacja jest teraz skonfigurowana do używania kluczy interfejsu API.

Co dalej?

Po skonfigurowaniu autoryzacji sprawdź te funkcje ARCore, które używają :