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 iOS 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:

  • 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 mã thông báo uỷ quyền để giao tiếp với API ARCore.

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. Xây dựng một phiên bằng cách sử dụng GARSession#sessionWithError:.

    NSError *error = nil;
    GARSession *garSession = [GARSession sessionWithError:&error];
    
  2. Khi bạn lấy mã thông báo, hãy truyền mã đó vào phiên bằng cách sử dụng setAuthToken:. Nếu không, phiên sẽ sử dụng mã thông báo uỷ quyền hợp lệ gần đây nhất mà bạn đã truyền vào. Gọi phương thức này mỗi khi bạn làm mới mã thông báo:

    [garSession 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. Khi tạo GARSession, hãy sử dụng GARSession#sessionWithAPIKey:bundleIdentifier:error: và chèn khoá API của bạn:

    self.garSession = [GARSession sessionWithAPIKey:@"your-api-key"
                                   bundleIdentifier:nil
                                              error:&error];
    
  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ó: