最初の API 呼び出しを行う

このチュートリアルの手順に沿って、Street View Publish API の基本的な呼び出しを行います。

HTTP 呼び出しの実行

Street View Publish API は、curl、wget、 Postman。 ほとんどの場合、任意のプログラミング言語を使用してクライアント アプリケーションを構築します。 作成方法を説明しますが、このチュートリアルでは できます。

クライアント ライブラリもいくつか用意されています(まだ提供していない場合)。 直接 HTTP 呼び出しを行う場合に便利です

前提条件

  1. Google API Console へのアクセス、API キーのリクエスト、アプリケーションの登録を行うには、Google アカウントが必要です。

  2. Google Developers Console でプロジェクトを作成し、アプリケーションが API リクエストを送信できるように認証情報を取得します。

  3. プロジェクトを作成したら、Street View Publish API が、アプリケーションで使用するよう登録されているサービスのいずれかであることを確認します。

    1. API Console に移動し、登録したプロジェクトを選択します。
    2. 有効な API のページにアクセスします。有効な API のリストに Google Street View API が表示されていることを確認します。有効になっていない場合は、API ライブラリを開いて API を有効にします。
  4. OAuth 2.0 認証を実装する方法については、認証ガイドをご覧ください。

  5. JavaScript Object Notation(JSON)データ形式のコアコンセプトをよく理解してください。JSON は言語に依存しない一般的なデータ形式で、任意のデータ構造をシンプルなテキストで表現します。詳しくは json.org をご覧ください。

API キーを取得する

認証と割り当ての目的のため、Google Street View Publish API には、Developers Console で生成した認証情報を使って使用する必要があります。

  1. [認証情報] に移動します。 ] ページを開きます。
  2. すでに API キーをお持ちの場合は、そのキーの値を使用できます。それ以外の場合は [新しい認証情報] メニューから [API キー] を選択して、新しい認証情報を作成します。

アクセス トークンを取得する

  1. Google Developers OAuth 2.0 Playground に移動します。
  2. 設定メニュー(右上の歯車アイコン)をクリックし、[Use your own OAuth credentials] にチェックを入れて、Client IDClient secret をクリックし、[閉じる] をクリックします。 <ph type="x-smartling-placeholder">
  3. [ステップ 1: 選択とAPI を承認するには、API スコープ https://www.googleapis.com/auth/streetviewpublish [Input your own scopes] フィールドを開き、[Authorize APIs] をクリックします。 新しいページが開き、API を承認することを確認します。
  4. [Exchange authorization code for token] をクリックします。これが UDM イベントに [Access token] フィールド。このフィールドには、API で使用するアクセス トークンが 確認しましょう。アクセス トークンは 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 を返します。

  1. アップロード 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'
          
  2. 写真のバイトをアップロード URL にアップロードします。
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
  3. 写真のメタデータをアップロードする
            $ 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 は消去されます。有効な値 updateMaskplaces, pose.heading, pose.latlngpair, pose.level, connections です。updateMask には複数のカンマ区切り値を指定できます。