Google Cloud で ARCore API を使用する

プラットフォームを選択:

Geospatial APICloud Anchors などの ARCore 機能では、Google Cloud でホストされている ARCore API を使用します。これらの機能を使用する場合、アプリは認証情報を使用して ARCore API サービスにアクセスします。

このクイックスタートでは、Google Cloud でホストされている ARCore API サービスと通信できるようにアプリケーションを設定する方法について説明します。

新しい Google Cloud プロジェクトを作成するか、既存のプロジェクトを使用します

既存のプロジェクトがある場合は、それを選択します。

プロジェクト セレクタに移動

既存の Google Cloud プロジェクトがない場合は、1 つ作成します。

新しいプロジェクトを作成

ARCore API を有効にする

ARCore API を使用するには、プロジェクトで ARCore API を有効にする必要があります。

ARCore API を有効にする

認証方法を設定する

iOS アプリは、2 つの異なる認証方法(推奨の方法であるキーなし認証と、API キー認証)を使用して、ARCore API と通信できます。

  • キーなし認証では、署名されたトークンを使用して API へのアクセスを制御します。このメソッドでは、トークンに署名し、API へのアクセスを制御するために、ユーザーが所有するサーバーが必要です。
  • API キーは、Google Cloud プロジェクトを識別する文字列です。API キーは、クライアントからアクセスされることが多いため、安全とはみなされません。トークン認証を使用して ARCore API と通信することを検討してください。

キーレス

ARCore は、JSON ウェブトークンを使用した iOS での API 呼び出しの承認をサポートしています。トークンは Google サービス アカウントによって署名されている必要があります。

iOS 用のトークンを生成するには、次の要件を満たすエンドポイントがサーバー上になければなりません。

  • 独自の認可メカニズムでエンドポイントを保護する必要があります。

  • エンドポイントは、次のように新しいトークンを毎回生成する必要があります。

    • 各ユーザーは一意のトークンを取得します。
    • トークンはすぐには期限切れになりません。

サービス アカウントと署名鍵を作成する

Google サービス アカウントと署名鍵を作成する手順は次のとおりです。

  1. Google Cloud で [認証情報] ページを開きます。
    認証情報
  2. [認証情報を作成] > [サービス アカウント] をクリックします。
  3. [サービス アカウントの詳細] で新しいアカウントの名前を入力し、[作成] をクリックします。
  4. [サービス アカウントの権限] ページで、[ロールを選択] プルダウンに移動します。[Service Accounts] > [サービス アカウント トークン作成者] を選択し、[続行] をクリックします。
  5. [ユーザーにこのサービス アカウントへのアクセスを許可] ページで、[完了] をクリックします。
  6. [認証情報] ページで [サービス アカウント] セクションを見つけ、作成したアカウントの名前をクリックします。
  7. [サービス アカウントの詳細] ページで、[キー] セクションまで下にスクロールし、[鍵を追加] > [新しいキーを作成] を選択します。
  8. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。

    これにより、秘密鍵を含む JSON ファイルがマシンにダウンロードされます。ダウンロードした JSON キーファイルは、安全な場所に保存します。

サーバーでトークンを作成する

サーバーに新しいトークン(JWT)を作成するには、標準 JWT ライブラリと、新しいサービス アカウントから安全にダウンロードした JSON ファイルを使用します。

開発マシンでトークンを作成する

開発マシンで JWT を生成するには、次の oauth2l コマンドを使用します。

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

毎回異なるトークンが生成されるようにするには、--cache フラグを使用して空のキャッシュの場所を指定する必要があります。結果の文字列は必ずカットしてください。余分なスペースや改行文字があると、API はトークンを拒否します

トークンに署名する

RS256 アルゴリズムと次のクレームを使用して、JWT に署名する必要があります。

  • iss - サービス アカウントのメールアドレス。
  • sub - サービス アカウントのメールアドレス。
  • iat - トークンが生成された Unix エポック時刻(秒単位)。
  • exp - iat + 3600(1 時間)。トークンが期限切れになる Unix エポック時間(秒単位)。
  • aud - オーディエンス。https://arcore.googleapis.com/設定する必要があります

非標準クレームは JWT ペイロードには必要ありませんが、uid クレームは対応するユーザーの特定に役立ちます。

Google が管理する環境で Google API を使用するなど、別の方法で JWT を生成する場合は、このセクションのクレームで JWT に署名してください。何よりも、オーディエンスが正しいことを確認してください。

ARCore セッションでトークンを渡す

  1. GARSession#sessionWithError: を使用してセッションを作成します。

    NSError *error = nil;
    GARSession *garSession = [GARSession sessionWithError:&error];
    
  2. トークンを取得したら、setAuthToken: を使用してセッションに渡します。それ以外の場合、セッションでは渡された最新の有効な認証トークンが使用されます。トークンを更新するたびに、次のメソッドを呼び出します。

    [garSession setAuthToken: authToken]
    

キーなし認証を使用するようにアプリが構成されました。

トークンをセッションに渡す場合は、次の点に注意してください。

  • API キーを使用してセッションを作成した場合、ARCore はトークンを無視してエラーをログに記録します。

    不要になった API キーを Google Developers Console で削除し、アプリから削除します。

  • ARCore は、スペースまたは特殊文字を含むトークンを無視します。

  • 通常、トークンの有効期限は 1 時間です。使用中にトークンが期限切れになる可能性がある場合は、新しいトークンを取得して API に渡します。

API キー

  1. Google Cloud で [認証情報] ページを開きます。
    認証情報
  2. [認証情報の作成] を選択し、メニューから [API キー] を選択します。
    [API キーを作成しました] ダイアログに、新しく作成されたキーの文字列が表示されます。
  3. GARSession を作成する際に、GARSession#sessionWithAPIKey:bundleIdentifier:error: を使用して API キーを挿入します。

    self.garSession = [GARSession sessionWithAPIKey:@"your-api-key"
                                   bundleIdentifier:nil
                                              error:&error];
    
  4. API キーを保護する方法については、API キーの制限に関するドキュメントをご覧ください。

これで、API キーを使用するようにアプリが構成されました。

次のステップ

認可を構成したら、それを使用している次の ARCore 機能を確認します。