Street View Publish API の基本的な呼び出しに必要な手順を完了するには、このチュートリアルの手順を行います。
HTTP 呼び出しを行う
Street View Publish API は、curl、wget、Postman などの複数のツールを使用して呼び出すことができます。ほとんどの場合、任意のプログラミング言語を使用して、API を使用するクライアント アプリケーションを構築します。このチュートリアルでは、個々のコマンドを使用して、基本的な操作を説明します。
Google では、直接 HTTP 呼び出しを行わない場合は、クライアント ライブラリも提供しています。
Prerequisites
-
Google API Console へのアクセス、API キーのリクエスト、アプリケーションの登録を行うには、Google アカウントが必要です。
-
Google Developers Console でプロジェクトを作成し、アプリケーションが API リクエストを送信できるように認証情報を取得します。
-
プロジェクトを作成したら、ストリートビュー Publish API がアプリケーション用に登録されているサービスの 1 つであることを確認します。
- API Console に移動し、登録したプロジェクトを選択します。
- [有効な API] ページに移動します。Google Street View API が、有効な API のリストに含まれていることを確認します。そうでない場合は、API ライブラリを開いて、API を有効にします。
-
OAuth 2.0 認証の実装方法については、認証のガイドをご覧ください。
-
JavaScript Object Notation(JSON)データ形式の基本コンセプトを理解できます。JSON は言語に依存しない一般的なデータ形式で、任意のデータ構造をシンプルなテキストで表現します。詳しくは json.org をご覧ください。
API キーを取得する
認証と割り当てを行うには、Google Street View Publish API で Developers Console から生成した認証情報を使用する必要があります。
- Developers Console の [認証情報] ページに移動します。
- API キーをすでに取得している場合は、その値を使用できます。それ以外の場合は、[新しい認証情報] メニューから [API キー] を選択して新しい API キーを作成します。
アクセス トークンを取得する
- Google Developers OAuth 2.0 Playground に移動します。
- 設定メニュー(右上の歯車アイコン)をクリックし、[Use your own OAuth credentials] をオンにして、対応するフィールドに
Client ID
とClient secret
を入力し、[Close] をクリックします。 - [Step 1: Select & authorization APIs] で、[Input your own scopes] に API スコープ
https://www.googleapis.com/auth/streetviewpublish
を入力し、[Authorize APIs] をクリックします。新しいページが開き、API を承認することを確認できます。 - [Exchange authorization code for tokens] をクリックします。これにより、[アクセス トークン] フィールドに値が入力され、次の手順で使用するアクセス トークンが入力されます。アクセス トークンの有効期限は 60 分です。有効期限が切れる前にトークンを自動更新するオプションを選択できます。これにより、新しいトークンが作成されます。
HTTP リクエストを送信する
API キーとアクセス トークンを取得したら、シェルで次のコマンドを実行して、サービスへの HTTP 呼び出しを実行できます。下の例では、/v1/photo:startUpload
メソッドを呼び出しています。
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
サンプル リクエスト
上記の HTTP リクエストの送信に問題がなければ、いくつかの方法をお試しください。以下に、さまざまな呼び出しを示します。
写真のリストを表示する
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
写真の取得
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
写真のアップロード
写真を作成するには、3 回の呼び出しが必要です。最初の呼び出しでアップロード URL が返され、2 回目の呼び出しで写真のバイトのアップロードに使用されます。写真バイトがアップロードされると、3 回目の呼び出しで写真のメタデータがアップロードされ、写真 ID が返されます。
- アップロード URL をリクエストする
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
- アップロード URL に写真のバイト数をアップロードします。
$ curl --request POST \ --url 'UPLOAD_URL' \ --upload-file 'PATH_TO_FILE' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- 写真のメタデータをアップロードする
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "uploadReference": { "uploadUrl": "UPLOAD_URL" }, "pose": { "heading": 105.0, "latLngPair": { "latitude": 46.7512623, "longitude": -121.9376983 } }, "captureTime": { "seconds": 1483202694 }, }'
写真を更新する
$ curl --request PUT \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY&updateMask=pose.latLngPair' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "pose": { "latLngPair": { "latitude": 46.7512624, "longitude": -121.9376982 } } }'
複数の写真の一括更新
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "updatePhotoRequests": [ { "photo": { "photoId": { "id": "FIRST_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1701638, "longitude": -122.3624387 } } }, "updateMask": "pose.latLngPair" }, { "photo": { "photoId": { "id": "SECOND_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1685704, "longitude": -122.3618021 } } }, "updateMask": "pose.latLngPair" } ] }'
写真を削除する
$ curl --request DELETE \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
updateMask とは
updateMask
を使用すると、写真の一部ではなくすべての写真を更新する場合に、リクエストを小さくすることができます。updateMask
を使用しないと、リクエストによって写真全体が更新されます。つまり、updateMask
を設定せず、リクエストに pose
がない場合、写真の pose
は消去されます。updateMask
に有効な値は places, pose.heading, pose.latlngpair, pose.level,
connections
です。updateMask
には複数のカンマ区切り値を指定できます。