Funkcje ARCore, takie jak Geospatial API i Cloud Anchors, korzystają z interfejsu ARCore API hostowanego w Google Cloud. Gdy korzystasz z tych funkcji, aplikacja używa danych logowania, aby uzyskać dostęp do usługi ARCore API.
Z tego przewodnika dowiesz się, jak skonfigurować aplikację, aby mogła komunikować się z usługą ARCore API hostowaną w Google Cloud.
Tworzenie nowego projektu Google Cloud lub używanie istniejącego
Jeśli masz już projekt, wybierz go.
Jeśli nie masz jeszcze projektu w chmurze Google Cloud, utwórz go.
Włączanie interfejsu ARCore API
Aby korzystać z interfejsu ARCore API, musisz go włączyć w swoim projekcie.
Włączanie interfejsu ARCore API
Konfigurowanie metody autoryzacji
Aplikacja Unity może komunikować się z interfejsem ARCore API za pomocą 2 różnych metod autoryzacji: autoryzacji bez klucza (zalecana metoda) i autoryzacji za pomocą klucza interfejsu API:
Na Androidzie autoryzacja bez klucza wykorzystuje kombinację nazwy pakietu aplikacji i odcisku cyfrowego klucza podpisywania do autoryzacji aplikacji.
W iOS autoryzacja bez klucza używa tokena podpisanego w celu kontrolowania dostępu do interfejsu API. Ta metoda wymaga, aby serwer należący do Ciebie podpisywał tokeny i kontrolował dostęp do interfejsu API.
Klucz interfejsu API to ciąg znaków, który identyfikuje projekt w chmurze Google. Klucze API nie są zwykle uważane za bezpieczne, ponieważ są zazwyczaj dostępne dla klientów. Do komunikacji z interfejsem ARCore API możesz używać autoryzacji bez klucza.
Bezkluczykowy
Aby autoryzować aplikację za pomocą uwierzytelniania bez klucza, utwórz identyfikatory klienta OAuth 2.0.
Określanie odcisków cyfrowych klucza podpisywania
Identyfikator klienta OAuth 2.0 używa odcisku cyfrowego klucza podpisywania aplikacji do identyfikowania aplikacji.
.Jak uzyskać odcisk cyfrowy podpisu debugowania
Podczas uruchamiania lub debugowania projektu narzędzia pakietu Android SDK automatycznie podpisują aplikację wygenerowanym certyfikatem debugowania.
Aby uzyskać odcisk cyfrowy certyfikatu debugowania, użyj tego polecenia.keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Narzędzie keytool poprosi Cię o podanie hasła do magazynu kluczy. Domyślne hasło magazynu kluczy debugowania to android. Narzędzie keytool przesyła odcisk cyfrowy do terminala. 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 podpisu z magazynu kluczy
Jeśli masz plik magazynu kluczy, użyj narzędzia keytool, aby określić odcisk palca.
keytool -list -v -alias your-key-name -keystore path-to-production-keystoreNarzędzie keytool przesyła odcisk cyfrowy do terminala. 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 podpisywania aplikacji przez Google Play
Gdy używasz podpisywania aplikacji przez Google Play, Google zarządza kluczem podpisywania Twojej aplikacji i wykorzystuje go do podpisywania plików APK. Ten klucz powinien być używany w przypadku odcisku cyfrowego podpisu.
- Na stronie Podpisywanie aplikacji w Konsoli Google Play przewiń do sekcji Certyfikat klucza podpisywania aplikacji.
- 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 danych logowania projektu Google Cloud.
W Google Cloud otwórz stronę Dane logowania.
Kliknij Utwórz dane logowania, a potem w menu wybierz Identyfikator klienta OAuth.
Wypełnij wymagane pola w ten 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 uzyskanego w poprzednich krokach.
Kliknij Utwórz.
Dołączanie wymaganych bibliotek
- Dodaj
com.google.android.gms:play-services-auth:16+do zależności aplikacji. Jeśli używasz minifikacji kodu, dodaj ją do pliku
build.gradleaplikacji:buildTypes { release { ... proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }Dodaj do pliku
proguard-rules.proaplikacji 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.** { *; }
Twoja aplikacja jest teraz skonfigurowana do korzystania z uwierzytelniania bez użycia klucza.
Bezkluczykowy
ARCore obsługuje autoryzację wywołań interfejsu API w iOS za pomocą tokena sieciowego JSON. Token musi być podpisany przez konto usługi Google.
Aby generować tokeny na potrzeby iOS, musisz mieć na serwerze punkt końcowy, który spełnia te wymagania:
Punkt końcowy musi być chroniony przez Twój mechanizm autoryzacji.
Punkt końcowy musi generować nowy token za każdym razem, gdy:
- Każdy użytkownik otrzymuje unikalny token.
- Tokeny nie wygasają natychmiast.
Tworzenie konta usługi i klucza podpisywania
Aby utworzyć konto usługi Google i klucz podpisywania, wykonaj te czynności:
- W Google Cloud otwórz stronę Dane logowania.
Dane logowania - Kliknij Utwórz dane logowania > Konto usługi.
- W sekcji Szczegóły konta usługi wpisz nazwę nowego konta, a następnie kliknij Utwórz.
- Na stronie Uprawnienia konta usługi otwórz menu Wybierz rolę. Kliknij Konta usługi > Twórca tokenów konta usługi, a potem kliknij Dalej.
- Na stronie Przyznaj użytkownikom dostęp do tego konta usługi kliknij Gotowe.
- Na stronie Dane logowania znajdź sekcję Konta usługi i kliknij nazwę utworzonego przed chwilą konta.
- Na stronie Szczegóły konta usługi przewiń w dół do sekcji Klucze i wybierz Dodaj klucz > Utwórz nowy klucz.
Wybierz typ klucza JSON i kliknij Utwórz.
Na komputer zostanie pobrany plik JSON zawierający klucz prywatny. Pobrany plik klucza JSON przechowuj w bezpiecznym miejscu.
Tworzenie tokenów na serwerze
Aby utworzyć nowe tokeny (JWT) na serwerze, użyj standardowych bibliotek JWT i pliku JSON, który został bezpiecznie pobrany z nowego konta usługi.
Tworzenie tokenów na komputerze używanym do programowania
Aby wygenerować tokeny JWT na komputerze używanym do programowania, użyj tego polecenia: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 konieczne, aby za każdym razem generować inny token. Pamiętaj, aby przyciąć wynikowy ciąg znaków. Dodatkowe spacje lub znaki nowego wiersza spowodują, że interfejs API odrzuci token.
Podpisywanie tokena
Do podpisania tokena JWT musisz użyć algorytmu RS256 i tych roszczeń:
iss– adres e-mail konta usługi.sub– adres e-mail konta usługi.iat– czas uniksowy w sekundach, w którym wygenerowano token.exp–iat+3600(1 godzina). Czas wygaśnięcia tokena w sekundach od początku epoki systemu Unix.aud– odbiorcy. Musi mieć wartośćhttps://arcore.googleapis.com/.
Niestandardowe deklaracje nie są wymagane w ładunku JWT, ale deklaracja uid może być przydatna do identyfikowania odpowiedniego użytkownika.
Jeśli do generowania tokenów JWT używasz innej metody, np. interfejsu API Google w środowisku zarządzanym przez Google, pamiętaj, aby podpisywać tokeny JWT za pomocą deklaracji opisanych w tej sekcji. Przede wszystkim upewnij się, że odbiorcy są odpowiedni.
Przekazywanie tokena w sesji ARCore
- Sprawdź, czy strategia uwierzytelniania w iOS jest ustawiona na AuthenticationToken. W Unity kliknij Edit (Edytuj) > Project Settings (Ustawienia projektu) > XR Plug-in Management (Zarządzanie wtyczkami XR) > ARCore Extensions (Rozszerzenia ARCore). W menu Strategia uwierzytelniania na iOS wybierz opcję Token uwierzytelniania.
Gdy uzyskasz token, przekaż go do sesji ARCore za pomocą tego kodu:
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);
Twoja aplikacja jest teraz skonfigurowana do korzystania z uwierzytelniania bez użycia klucza.
Gdy przekazujesz token do sesji, pamiętaj o tych kwestiach:
Jeśli do utworzenia sesji użyto klucza interfejsu API, ARCore zignoruje token i zarejestruje błąd.
Jeśli nie potrzebujesz już klucza interfejsu API, usuń go w Google Developers Console i z aplikacji.
ARCore ignoruje tokeny zawierające spacje lub znaki specjalne.
Tokeny zwykle wygasają po godzinie. Jeśli istnieje możliwość, że token wygaśnie podczas używania, uzyskaj nowy token i przekaż go do interfejsu API.
Klucz interfejsu API
- W Google Cloud otwórz stronę Dane logowania.
Dane logowania - Kliknij Utwórz dane logowania, a potem w menu wybierz Klucz interfejsu API.
W oknie Utworzono klucz API pojawi się ciąg znaków nowo utworzonego klucza. W Unity kliknij Edit (Edytuj) > Project Settings (Ustawienia projektu) > XR Plug-in Management (Zarządzanie wtyczkami XR) > ARCore Extensions (Rozszerzenia ARCore). W przypadku każdej platformy docelowej (Android, iOS) w menu Strategia uwierzytelniania wybierz opcję Klucz interfejsu API. Następnie wstaw klucz interfejsu API w odpowiednich polach.
- Aby zabezpieczyć klucz interfejsu API, zapoznaj się z dokumentacją dotyczącą ograniczeń klucza interfejsu API.
Aplikacja jest teraz skonfigurowana do używania kluczy interfejsu API.
Co dalej?
Po skonfigurowaniu autoryzacji zapoznaj się z tymi funkcjami ARCore, które jej używają: