Sử dụng API ARCore trên Google Cloud

Chọn nền tảng:

Các tính năng ARCore như API Không gian địa lýCloud Anchors sử dụng API ARCore được lưu trữ trên Google Cloud. Khi sử dụng các tính năng này, ứng dụng của bạn sẽ dùng thông tin xác thực để truy cập vào dịch vụ API ARCore.

Hướng dẫn bắt đầu nhanh này mô tả cách thiết lập ứng dụng của bạn để ứng dụng có thể giao tiếp với dịch vụ API ARCore được lưu trữ trên Google Cloud.

Tạo một dự án mới trên Google Cloud hoặc sử dụng dự án hiện có

Nếu bạn đã có một dự án, hãy chọn dự án đó.

Chuyển đến bộ chọn dự án

Nếu bạn chưa có dự án nào trên Google Cloud, hãy tạo một dự án.

Tạo dự án mới

Bật API ARCore

Để sử dụng API ARCore, bạn phải bật API này trong dự án.

Bật API ARCore

Thiết lập phương thức uỷ quyền

Ứng dụng Unity có thể giao tiếp với API ARCore bằng hai phương thức uỷ quyền khác nhau: Uỷ quyền không khoá (phương thức được đề xuất) và Uỷ quyền khoá API:

  • Trên Android, tính năng uỷ quyền không dùng khoá kết hợp tên gói của ứng dụng và vân tay số của khoá ký để cấp quyền cho ứng dụng của bạn.

    Trên iOS, tính năng uỷ quyền không cần khoá sử dụng một mã thông báo đã ký để kiểm soát quyền truy cập vào API. Phương thức này yêu cầu một máy chủ do bạn sở hữu để ký các mã thông báo và kiểm soát quyền truy cập vào API.

  • Khoá API là một chuỗi xác định một dự án trên Google Cloud. Các khoá API thường không được coi là an toàn vì ứng dụng thường có thể truy cập vào các khoá này. Hãy cân nhắc việc sử dụng tính năng uỷ quyền không cần khoá để giao tiếp với API ARCore.

Không dùng chìa khoá

Để cho phép ứng dụng của bạn bằng cách sử dụng tính năng Xác thực không cần khoá, hãy tạo mã ứng dụng khách OAuth 2.0.

Xác định vân tay số khoá ký

Mã ứng dụng khách OAuth 2.0 sử dụng vân tay số của khoá ký của ứng dụng để xác định ứng dụng của bạn.

Cách lấy vân tay số ký gỡ lỗi

Khi chạy hoặc gỡ lỗi dự án, bộ công cụ SDK Android sẽ tự động ký ứng dụng của bạn bằng một chứng chỉ gỡ lỗi đã tạo.

Dùng lệnh sau để lấy vân tay số cho chứng chỉ gỡ lỗi.

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Máy tính Windows
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

Tiện ích keytool nhắc bạn nhập mật khẩu cho kho khoá. Mật khẩu mặc định cho kho khoá gỡ lỗi là android. Sau đó, tiện ích keytool sẽ in vân tay vào thiết bị đầu cuối. Ví dụ:

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

Cách lấy vân tay số ký từ kho khoá

Nếu bạn có tệp kho khoá, hãy sử dụng tiện ích keytool để xác định vân tay số.

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

Sau đó, tiện ích keytool sẽ in vân tay vào thiết bị đầu cuối. Ví dụ:

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

Cách lấy khoá ký cho ứng dụng thông qua Tính năng ký ứng dụng của Play

Khi sử dụng Tính năng ký ứng dụng của Play, Google sẽ quản lý khoá ký của ứng dụng và sử dụng khoá đó để ký các tệp APK của bạn. Khoá này sẽ được dùng cho vân tay ký.

  1. Trên trang Ký ứng dụng trong Google Play Console, hãy di chuyển đến phần Chứng chỉ khoá ký ứng dụng.
  2. Sử dụng vân tay số cho chứng chỉ SHA-1.

Tạo mã ứng dụng khách OAuth 2.0

Đối với mỗi khoá ký áp dụng ở các bước trước, hãy tạo một mã ứng dụng khách OAuth 2.0 trong thông tin xác thực của dự án trên Google Cloud.

  • Trong Google Cloud, hãy mở trang Thông tin xác thực.

    Thông tin xác thực

  • Nhấp vào Tạo thông tin xác thực, sau đó chọn Mã ứng dụng khách OAuth trong trình đơn.

  • Điền vào các trường bắt buộc như sau:

    • Loại ứng dụng: chọn Android.
    • Package name (Tên gói): sử dụng tên gói như đã khai báo trong AndroidManifest.xml.
    • Dấu vân tay chứng chỉ SHA-1: sử dụng vân tay số thu được trong các bước trước.
  • Nhấn vào Tạo.

Bao gồm các thư viện bắt buộc

  1. Đưa com.google.android.gms:play-services-auth:16+ vào các phần phụ thuộc của ứng dụng.
  2. Nếu bạn đang sử dụng tính năng rút gọn mã, hãy thêm tính năng này vào tệp build.gradle của ứng dụng:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. Thêm phần sau vào tệp proguard-rules.pro của ứng dụng:

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

Ứng dụng của bạn hiện đã được định cấu hình để sử dụng tính năng Xác thực không cần khoá.

Không dùng chìa khoá

ARCore hỗ trợ việc uỷ quyền các lệnh gọi API trong iOS bằng cách sử dụng (mã thông báo web JSON). Mã thông báo phải do một tài khoản dịch vụ của Google ký.

Để tạo mã thông báo cho iOS, bạn phải có một điểm cuối trên máy chủ đáp ứng các yêu cầu sau:

  • Cơ chế uỷ quyền của riêng bạn phải bảo vệ điểm cuối.

  • Điểm cuối phải mỗi lần tạo một mã thông báo mới sao cho:

    • Mỗi người dùng sẽ nhận được một mã thông báo duy nhất.
    • Mã thông báo không hết hạn ngay lập tức.

Tạo tài khoản dịch vụ và khoá ký

Hãy làm theo các bước sau để tạo tài khoản dịch vụ và khoá ký của Google:

  1. Trong Google Cloud, hãy mở trang Thông tin xác thực.
    Thông tin xác thực
  2. Nhấp vào Tạo thông tin xác thực > Tài khoản dịch vụ.
  3. Trong phần Thông tin về tài khoản dịch vụ, hãy nhập tên cho tài khoản mới, rồi nhấp vào Tạo.
  4. Trên trang Quyền của tài khoản dịch vụ, hãy chuyển đến trình đơn thả xuống Chọn vai trò. Chọn Service Account > Service Account Token Creator (Tài khoản dịch vụ > Người tạo mã thông báo cho tài khoản dịch vụ), sau đó nhấp vào Tiếp tục.
  5. Trên trang Cấp cho người dùng quyền truy cập vào tài khoản dịch vụ này, hãy nhấp vào Xong.
  6. Trên trang Thông tin xác thực, hãy tìm phần Tài khoản dịch vụ rồi nhấp vào tên của tài khoản bạn vừa tạo.
  7. Trên trang Thông tin chi tiết về tài khoản dịch vụ, hãy di chuyển xuống phần Khoá rồi chọn Add Key > Create new key (Thêm khoá > Tạo khoá mới).
  8. Chọn JSON làm loại khoá rồi nhấp vào Tạo.

    Thao tác này sẽ tải một tệp JSON chứa khoá riêng tư xuống máy của bạn. Lưu trữ tệp khoá JSON đã tải xuống ở một vị trí an toàn.

Tạo mã thông báo trên máy chủ của bạn

Để tạo mã thông báo (JWT) mới trên máy chủ, hãy sử dụng thư viện JWT chuẩn và tệp JSON mà bạn đã tải xuống một cách an toàn từ tài khoản dịch vụ mới của mình.

Tạo mã thông báo trên máy phát triển

Để tạo JWT trên máy phát triển, hãy sử dụng lệnh oauth2l sau:

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

Bạn cần chỉ định vị trí bộ nhớ đệm trống bằng cách sử dụng cờ --cache để đảm bảo rằng mỗi lần tạo một mã thông báo khác. Hãy nhớ cắt bớt chuỗi kết quả. Thừa dấu cách hoặc ký tự dòng mới sẽ khiến API từ chối mã thông báo.

Ký mã thông báo

Bạn phải sử dụng thuật toán RS256 và các thông báo xác nhận quyền sở hữu sau đây để ký JWT:

  • iss – Địa chỉ email của tài khoản dịch vụ.
  • sub – Địa chỉ email của tài khoản dịch vụ.
  • iat – Thời gian bắt đầu của hệ thống Unix khi mã thông báo được tạo, tính bằng giây.
  • expiat + 3600 (1 giờ). Thời gian bắt đầu của hệ thống Unix khi mã thông báo hết hạn, tính bằng giây.
  • aud – Đối tượng. Giá trị này phải được đặt thành https://arcore.googleapis.com/.

Xác nhận quyền sở hữu không chuẩn không bắt buộc trong tải trọng JWT, mặc dù bạn có thể thấy xác nhận quyền sở hữu uid hữu ích cho việc xác định người dùng tương ứng.

Nếu bạn dùng một phương pháp khác để tạo JWT, chẳng hạn như sử dụng API Google trong môi trường do Google quản lý, hãy nhớ ký các JWT của bạn cùng với các thông báo xác nhận quyền sở hữu trong phần này. Trên hết, hãy đảm bảo rằng đối tượng của quảng cáo là chính xác.

Truyền mã thông báo trong phiên ARCore

  1. Hãy đảm bảo rằng Chiến lược xác thực iOS được đặt thành ConfirmToken. Trong Unity, hãy chuyển đến Edit (Chỉnh sửa) > Project Settings (Cài đặt dự án) > XR Plug-in Management (Quản lý trình bổ trợ XR) > Tiện ích ARCore. Trong trình đơn thả xuống Chiến lược xác thực iOS, hãy chọn tuỳ chọn Mã thông báo xác thực.
  2. Khi bạn lấy mã thông báo, hãy truyền mã đó vào phiên ARCore bằng cách sử dụng 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);
    

Ứng dụng của bạn hiện đã được định cấu hình để sử dụng tính năng Xác thực không cần khoá.

Hãy lưu ý những điều sau khi bạn truyền một mã thông báo vào phiên:

  • Nếu bạn đã sử dụng khoá API để tạo phiên hoạt động, thì ARCore sẽ bỏ qua mã thông báo và ghi lại lỗi.

    Nếu bạn không cần khoá API nữa, hãy xoá khoá đó trong Google Developers Console rồi xoá khoá đó khỏi ứng dụng của bạn.

  • ARCore bỏ qua các mã thông báo chứa dấu cách hoặc ký tự đặc biệt.

  • Mã thông báo thường hết hạn sau một giờ. Nếu mã thông báo của bạn có thể hết hạn trong khi sử dụng, hãy lấy mã thông báo mới và chuyển mã đó đến API.

Khóa API

  1. Trong Google Cloud, hãy mở trang Thông tin xác thực.
    Thông tin xác thực
  2. Nhấp vào Tạo thông tin xác thực, sau đó chọn Khoá API trong trình đơn.
    Hộp thoại khoá API đã tạo hiển thị chuỗi cho khoá mới tạo.
  3. Trong Unity, hãy chuyển đến Edit (Chỉnh sửa) > Project Settings (Cài đặt dự án) > XR Plug-in Management (Quản lý trình bổ trợ XR) > ARCore Extensions (Tiện ích ARCore). Đối với từng nền tảng mục tiêu (Android, iOS), trong trình đơn thả xuống Chiến lược xác thực, hãy chọn tuỳ chọn Khoá API. Sau đó, hãy chèn khoá API vào các trường khoá API.

  4. Xem tài liệu về các quy định hạn chế đối với khoá API để bảo mật khoá API.

Ứng dụng của bạn hiện đã được định cấu hình để sử dụng khoá API.

Các bước tiếp theo

Sau khi định cấu hình tính năng uỷ quyền, hãy xem các tính năng ARCore sau đây sử dụng nó: