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

Chọn nền tảng:

Các tính năng ARCore như Không gian địa lý APICloud 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 đăng nhập để truy cập vào dịch vụ API ARCore.

Phầ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 dự án mới trên Google Cloud hoặc 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 của mình.

Bật API ARCore

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

Một ứng dụng Unity có thể giao tiếp với API ARCore bằng cách sử dụng hai phương thức uỷ quyền: Uỷ quyền không cần khoá, phương thức đề xuất và uỷ quyền Khoá API:

  • Trên Android, tính năng uỷ quyền không dùng khoá sử dụng 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 dùng khoá sử dụng một mã thông báo đã ký để kiểm soát quyền truy cập vào API. Chiến dịch này yêu cầu máy chủ do bạn sở hữu phải ký 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 là thường không được xem là an toàn vì máy khách thường có thể truy cập được. Cân nhắc sử dụng phương thức uỷ quyền không dùng khoá để giao tiếp với API ARCore.

Không cần chìa khoá

Để cấp quyền cho ứng dụng của bạn bằng tính năng Xác thực không dùng khoá, hãy tạo ứng dụng OAuth 2.0 Mã nhận dạng.

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

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

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

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

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

Máy Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
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á. Chiến lược phát hành đĩa đơn mật khẩu mặc định cho kho khoá gỡ lỗi là android. Sau đó, tiện ích keytool 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 ký trong 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 in vân tay ra 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ý ứng dụ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 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. Bạn nên dùng khoá này cho vân tay số ký.

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

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

Đối với mỗi khoá ký hiện hành ở 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 đăng nhập 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 đăng nhập

  • Nhấp vào Tạo thông tin xác thực, sau đó chọn Mã ứng dụng 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.
    • Tên gói: Sử dụng tên gói như đã khai báo trong tệp AndroidManifest.xml.
    • Dấu vân tay chứng chỉ SHA-1: sử dụng vân tay số có được ở 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ã, thêm nó 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 phương thức xác thực không dùng khoá.

Không cần 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 (JSON Web mã thông báo). Mã thông báo phải do Google cung cấp Tài khoản dịch vụ.

Để 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ủ của mình đá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.

  • Mỗi lần, điểm cuối phải 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 một 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 đăng nhập
  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 Chi tiết 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 đối với tài khoản dịch vụ, hãy chuyển đến trình đơn thả xuống Chọn vai trò. Chọn Tài khoản dịch vụ > Người tạo mã thông báo cho tài khoản dịch vụ, rồi 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 phần Thông tin đăng nhập , hãy tìm phần Tài khoản dịch vụ rồi nhấp vào tên tài khoản mà bạn vừa tạo.
  7. Trên trang Chi tiết tài khoản dịch vụ, hãy cuộn xuống phần Khoá rồi chọn Add Key > (Thêm khoá) Tạo khoá mới.
  8. Chọn JSON làm loại khoá rồi nhấp vào Create (Tạo).

    Thao tác này sẽ tải tệp JSON chứa khoá riêng tư xuống máy của bạn. Cửa hàng 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ủ

Để tạo mã thông báo mới (JWT) trên máy chủ của bạn, hãy sử dụng JWT chuẩn thư việ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:

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 để hãy đảm bảo rằng mỗi lần tạo một mã thông báo khác nhau. Hãy nhớ cắt bớt chuỗi kết quả. Khoảng trắng thừa 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. Bạn phải đặt giá trị này thành https://arcore.googleapis.com/.

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

Nếu bạn sử dụng một phương pháp khác để tạo JWT, chẳng hạn như sử dụng API trong môi trường do Google quản lý, hãy nhớ ký JWT của bạn bằng 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 người xem là chính xác.

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

  1. Đảm bảo rằng Chiến lược xác thực iOS được đặt thành AuthenticationToken. Trong Unity, hãy chuyển đến Edit (Chỉnh sửa) > Cài đặt dự án > Quản lý plugin 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 mục Mã thông báo xác thực.
  2. Khi bạn nhận được mã thông báo, hãy chuyể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 phương thức xác thực không dùng khoá.

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

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

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

  • 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 có khả năng mã thông báo có thể hết hạn trong khi sử dụng, hãy lấy mã 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 đăng nhập
  2. Nhấp vào Tạo thông tin xác thực, rồi chọn Khoá API trên trình đơn.
    Các Hộp thoại do khoá API tạo sẽ hiển thị chuỗi cho khoá mới tạo.
  3. Trong Unity, hãy chuyển đến Edit (Chỉnh sửa) > Cài đặt dự án > Quản lý plugin XR > Tiện ích ARCore. Đối với từng nền tảng mục tiêu (Android, iOS), ở Trình đơn thả xuống Xác thực Chiến lược, chọn mục Khoá API. Sau đó: chèn khoá API vào các trường khoá API.

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

Ứ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

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