Menggunakan ARCore API di Google Cloud

Pilih platform:

Fitur ARCore seperti Geospatial API dan Cloud Anchors menggunakan ARCore API yang dihosting di Google Cloud. Saat menggunakan fitur ini, aplikasi Anda akan menggunakan kredensial untuk mengakses layanan ARCore API.

Panduan memulai ini menjelaskan cara menyiapkan aplikasi Anda agar dapat berkomunikasi dengan layanan ARCore API yang dihosting di Google Cloud.

Buat project Google Cloud baru atau gunakan project yang sudah ada

Jika Anda sudah memiliki project, pilih project tersebut.

Buka pemilih project

Jika Anda belum memiliki project Google Cloud, buat project.

Buat project baru

Mengaktifkan ARCore API

Untuk menggunakan ARCore API, Anda harus mengaktifkannya di project Anda.

Mengaktifkan ARCore API

Menyiapkan metode otorisasi

Aplikasi iOS dapat berkomunikasi dengan ARCore API menggunakan dua metode otorisasi yang berbeda: Otorisasi tanpa kunci, yang merupakan metode yang direkomendasikan, dan otorisasi Kunci API:

  • Otorisasi tanpa kunci menggunakan token yang ditandatangani untuk mengontrol akses ke API. Metode ini memerlukan server milik Anda untuk menandatangani token dan mengontrol akses ke API.
  • Kunci API adalah string yang mengidentifikasi project Google Cloud. Kunci API umumnya tidak dianggap aman karena biasanya dapat diakses oleh klien. Pertimbangkan untuk menggunakan Otorisasi token untuk berkomunikasi dengan ARCore API.

Tanpa kunci

ARCore mendukung otorisasi panggilan API di iOS menggunakan (token Web JSON). Token harus ditandatangani oleh akun Layanan Google.

Agar dapat menghasilkan token untuk iOS, Anda harus memiliki endpoint di server yang memenuhi persyaratan berikut:

  • Mekanisme otorisasi Anda sendiri harus melindungi endpoint.

  • Endpoint harus membuat token baru setiap saat, sehingga:

    • Setiap pengguna mendapatkan token unik.
    • Masa berlaku token tidak langsung berakhir.

Membuat akun layanan dan kunci penandatanganan

Ikuti langkah-langkah berikut untuk membuat akun layanan Google dan kunci penandatanganan:

  1. Di Google Cloud, buka halaman Credentials.
    Kredensial
  2. Klik Create Credentials > Service account.
  3. Di bagian Detail akun layanan, ketik nama untuk akun baru, lalu klik Buat.
  4. Di halaman izin Akun layanan, buka drop-down Pilih peran. Pilih Service Accounts > Service Account Token Creator, lalu klik Lanjutkan.
  5. Di halaman Berikan pengguna akses ke akun layanan ini, klik Selesai.
  6. Pada halaman Credentials, temukan bagian Service Accounts lalu klik nama akun yang baru saja Anda buat.
  7. Pada halaman Service account details, scroll ke bawah ke bagian Keys, lalu pilih Add Key > Create new key.
  8. Pilih JSON sebagai jenis kunci dan klik Create.

    Tindakan ini akan mendownload file JSON yang berisi kunci pribadi ke komputer Anda. Simpan file kunci JSON yang didownload di lokasi yang aman.

Membuat token di server

Untuk membuat token baru (JWT) di server Anda, gunakan library JWT standar dan file JSON yang didownload dengan aman dari akun layanan baru.

Membuat token di mesin pengembangan

Untuk membuat JWT di mesin pengembangan, gunakan perintah oauth2l berikut:

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

Menentukan lokasi cache kosong menggunakan tanda --cache diperlukan untuk memastikan bahwa token yang berbeda dibuat setiap waktu. Pastikan untuk memangkas string yang dihasilkan. Spasi tambahan atau karakter baris baru akan menyebabkan API menolak token.

Menandatangani token

Anda harus menggunakan algoritme RS256 dan klaim berikut untuk menandatangani JWT:

  • iss — Alamat email akun layanan.
  • sub — Alamat email akun layanan.
  • iat — Waktu Unix epoch saat token dibuat, dalam detik.
  • expiat + 3600 (1 jam). Waktu Unix epoch saat token berakhir, dalam hitungan detik.
  • aud — Audiens. Nilainya harus ditetapkan ke https://arcore.googleapis.com/.

Klaim non-standar tidak diperlukan dalam payload JWT, meskipun Anda mungkin merasa klaim uid berguna untuk mengidentifikasi pengguna yang sesuai.

Jika Anda menggunakan pendekatan yang berbeda untuk menghasilkan JWT, seperti menggunakan Google API di lingkungan yang dikelola Google, pastikan untuk menandatangani JWT dengan klaim di bagian ini. Yang terpenting, pastikan audiens benar.

Meneruskan token dalam sesi ARCore

  1. Buat sesi menggunakan GARSession#sessionWithError:.

    NSError *error = nil;
    GARSession *garSession = [GARSession sessionWithError:&error];
    
  2. Saat Anda mendapatkan token, teruskan token tersebut ke sesi menggunakan setAuthToken:. Jika tidak, sesi akan menggunakan token otorisasi valid terbaru yang Anda teruskan. Panggil metode ini setiap kali Anda memperbarui token:

    [garSession setAuthToken: authToken]
    

Aplikasi Anda kini dikonfigurasi untuk menggunakan autentikasi Tanpa Kunci.

Perhatikan hal-hal berikut saat Anda meneruskan token ke sesi:

  • Jika Anda telah menggunakan kunci API untuk membuat sesi, ARCore akan mengabaikan token dan mencatat error.

    Jika Anda tidak lagi memerlukan kunci API, hapus kunci API di Konsol Google Developers dan hapus dari aplikasi Anda.

  • ARCore mengabaikan token yang berisi spasi atau karakter khusus.

  • Masa berlaku token biasanya berakhir setelah satu jam. Jika ada kemungkinan masa berlaku token Anda habis saat digunakan, dapatkan token baru dan teruskan ke API.

Kunci API

  1. Di Google Cloud, buka halaman Credentials.
    Kredensial
  2. Klik Create credentials, lalu pilih API key dari menu.
    Dialog kunci API yang dibuat akan menampilkan string untuk kunci yang baru dibuat.
  3. Saat membuat GARSession, gunakan GARSession#sessionWithAPIKey:bundleIdentifier:error: dan masukkan kunci API Anda:

    self.garSession = [GARSession sessionWithAPIKey:@"your-api-key"
                                   bundleIdentifier:nil
                                              error:&error];
    
  4. Tinjau dokumentasi tentang pembatasan kunci API untuk mengamankan kunci API Anda.

Aplikasi Anda sekarang dikonfigurasi untuk menggunakan kunci API.

Langkah selanjutnya

Setelah otorisasi dikonfigurasi, lihat fitur ARCore berikut yang menggunakannya: