以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Street View Image API をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Street View Image API をアクティベートする
  3. 適切なキーを作成する
続ける

キーと署名の取得、認証

すべての Google Street View Image API アプリケーションに認証が必要です。

  • 標準 API のユーザー: 標準プランで API を使用している場合は、API キーを使用する必要があります。また、デジタル署名を含めることをお勧めします。デジタル署名は、特定の状況で必要になります。詳細は、標準 API 向けの API キーデジタル署名をご覧ください。
  • Premium Plan ユーザー: Google Maps APIs Premium Plan で API を使用している場合は、次の 2 つの認証方法があります。
    • Google Maps APIs Premium Plan プロジェクト(Premium Plan を購入した際に作成されたプロジェクト)で Google API Console に設定された API キーデジタル署名を使用します。
        
    • API キーの代わりに、クライアント ID とデジタル署名を使用します。

    最適な認証方式の選択に関する情報については、以下の Google Maps APIs Premium Plan のセクションをご覧ください。

標準 API 向けの認証 - API キーとデジタル署名

リクエストにキーを含めることによって、Google API Console でアプリケーションの API 使用状況を監視したり、十分な量の 1 日あたりの無料の割り当てを利用したり、必要な場合には、Google からアプリケーションについての問い合わせができるようになります。

  • 標準 API の場合、推奨される認証方式は、Google Street View Image API へのすべてのリクエストに API キーデジタル署名を含めることです。API キーは必須です。デジタル署名は、従量課金を有効にした場合に必須です。一意の署名により、Google のサーバーでは、API キーを使用してリクエストを生成しているサイトにその処理が承認されていることを確認できます。
  • 従量課金を有効にせずに標準 API を使用する場合は、API キーが必要です。デジタル署名は推奨されていますが、省略可能です。

API キーを取得する

Google Street View Image API の使用を開始するには、下のボタンをクリックして、表示される指示に従って Google Street View Image API をアクティベートし、API キーを取得します。

キーを取得する

または、次の手順で API キーを取得します。

  1. Google API Console に移動します。
  2. プロジェクトを作成または選択します。
  3. [Continue] をクリックして API を有効にします。
  4. [Credentials] ページで API キーを取得します(さらに、API キーの制限を設定します)。
    注: 制限のない既存の API キーまたはブラウザの制限が設定されたキーを所有している場合は、そのキーを使用することもできます。
  5. 割り当て量の盗用を防ぐため、ベスト プラクティスに従って API キーを保護します。
  6. (オプション)課金を有効化します。詳細については、使用制限をご覧ください。


Google API Console で、既存のキーを探すこともできます。

Google API Console の使用に関する詳細については、API Console のヘルプをご覧ください。

API キーの制限のタイプ

Google Maps API は、Android または iOS アプリ、ウェブブラウザ、HTTP 経由のウェブサービスで使用できます。どのプラットフォームの API でも、汎用的な(制限されていない)API キーを使用できます。必要に応じて、API キーに制限(たとえば、IP アドレス)を追加できます。制限されたキーは、その制限タイプをサポートするプラットフォーム上でのみ機能します。キーや認証情報の詳細については、こちらをご覧ください

標準 API 向けのデジタル署名

Google Street View Image API へのリクエストには、signature パラメータを含める必要があり、共有 URL 署名シークレットを使用して生成する必要があるデジタル署名を指定します。共有シークレットは、Google API Consoleにあります。

注: 従量課金を有効にしている場合は、デジタル署名が必要です。1 日あたり 25,000 回に設定されているマップロードの無料制限を超えた場合、その日の追加のマップロードに対しては課金が発生します。デジタル署名が含まれていない課金対象のマップロードは失敗します。従量課金を有効にせずに標準 API を使用する場合は、デジタル署名の使用が推奨されますが、省略可能です。

署名プロセスでは、暗号化アルゴリズムを使用して URL と共有シークレットが結合されます。生成された一意の署名により、Google のサーバーでは、API キーを使用してリクエストを生成しているサイトにその処理が承認されていることを確認できます。

URL 署名シークレットを取得する

暗号化 URL 署名シークレットは、Google API Consoleで入手できます。シークレットは秘密鍵としても知られ、URL 用 Modified Base64 でエンコードされます。このシークレットは、ユーザーと Google で共有され、そのユーザーの API キーに固有です。URL 署名シークレットは安全に保管してください。シークレットをリクエストに渡したり、ウェブサイトに保存したり、公開フォーラムに投稿したりしないでください。この URL 署名シークレットを取得した誰かが、あなたの ID を使用してリクエストを偽装する可能性があります。

このリンクをクリックすると、URL 署名シークレットが含まれる API Console ページに直接移動できます。重要: [Project] プルダウン メニューで、Google Street View Image API の API キーを作成した際に使用した同じプロジェクトを選択する必要があります。

または、次の手順で URL 署名シークレットを表示します。

  1. Google API Console に移動します。
  2. [Project] プルダウン メニューで、Google Street View Image API の API キーを作成した際に使用した同じプロジェクトを選択します。
  3. [Dashboard] ページの API リストで、Google Street View Image API の名前をクリックします。API の詳細が表示され、[Overview] タブが開きます。
  4. [URL signing secret] タブをクリックします。

新しい URL 署名シークレットを取得するには、[Regenerate secret] を選択します。前のシークレットは、新しいシークレットの生成後 24 時間で期限切れになります。24 時間を過ぎると、古いシークレットを含むリクエストは機能しなくなります。

API キーと一緒に使用するデジタル署名を生成する

リクエストのデジタル署名を作成するには、次のセクションで説明する手順を実行します

Google Maps APIs Premium Plan ユーザーの認証

このセクションの情報は、2016 年 1 月 6 日から利用可能になった新しい Google Maps APIs Premium Plan のみに適用されます。

以前の Maps APIs for Work または Maps API for Business を所有している場合は、Maps APIs for Work ライセンス ガイドをご覧ください。以前のライセンスがあるかどうかを確認するには、Google Cloud Support Portal で、左側にある [Maps: Usage Report] をクリックします。レポートの最上部にある ID が次の形式になっている場合は、新しい Premium Plan があります。
gme-[company] & proj-[number] ([type])
そうでない場合は、以前のライセンスがあります。

Google Maps APIs Premium Plan ライセンスで Google Street View Image API を使用する場合、API キーまたはクライアント ID でアプリケーションを認証する必要があります。また、デジタル署名も必要です。注: 以前の Maps API for Business ライセンスを所有している場合は、API キーではなく、クライアント ID を使用する必要があります。

使用する認証方式を決定する際は、以下の点を考慮してください。

  • API キー(Google Maps APIs Premium Plan ユーザーは利用可能ですが、以前の Maps API for Business ライセンスの所有者は利用できません)- API キーを使用してリクエストを認証すると、次のことができます。
    • Google API Console ですべての API を管理する
    • Google API Console でアプリケーションのリアルタイムの使用状況データと 30 日間の使用状況履歴データにアクセスする
    • Google Cloud Support Portal で 30 日間を超えるデータが反映された使用状況レポートを表示する
  • クライアント ID - (API キーではなく)クライアント ID を使用してリクエストを認証すると、次のことができます。
    • channel パラメータをリクエストに追加して、より詳細な使用状況レポートを表示する
    • Google Cloud Support Portal で 30 日間を超えるデータが反映された使用状況レポートを表示する
    • Maps JavaScript API の Maps Analytics ツールを使用する

詳細は、Premium Plan ユーザーが利用できるレポートをご覧ください。

API キーと署名を使用する

API キーを使用して ストリートビュー API を認証するには、2 つの認証パラメータ(API キーと一意のデジタル署名)が必要です。

API キーを取得するには、下のボタンをクリックし、指示に従って操作します。

重要: [Project] プルダウン メニューでは、Premium Plan を購入した際に作成されたプロジェクトを選択する必要があります。プロジェクト名の先頭は、Google Maps APIs for Business or Google Maps for Work or Google Maps です。*

キーを取得する

または、次の手順で API キーを取得します。

  1. Google API Console に移動します。
  2. [Project] ドロップダウン メニューから、Google Maps Premium プロジェクト*を選択します。
  3. [Continue] をクリックします。
  4. [Credentials] ページで API キーを取得します(さらに、API キーの制限を設定します)。
    注: 制限のない既存のキーまたはブラウザの制限が設定されたキーを所有している場合は、そのキーを使用することもできます。
  5. 割り当て量の盗用を防ぐため、ベスト プラクティスに従って API キーを保護します。

* 注: [Project] ドロップダウン メニューでは、Premium Plan を購入した際に作成されたプロジェクトを選択する必要があります。プロジェクト名の先頭は、Google Maps APIs for Business or Google Maps for Work or Google Maps です。重要: 以前の Maps API for Business ライセンスを所有している場合は、API キーではなく、クライアント ID を使用する必要があります。


Google API Console で、既存のキーを探すこともできます。

Google API Console の使用に関する詳細については、API Console のヘルプをご覧ください。

Premium Plan で API キーを使用するときのデジタル署名

key パラメータが使用されているリクエストを Google Street View Image API に送信する場合は、signature パラメータも指定し、共有 URL 署名シークレットを使用して生成したデジタル署名を含める必要があります。共有シークレットは、Google API Consoleにあります。

署名プロセスでは、暗号化アルゴリズムを使用して URL と共有シークレットが結合されます。生成された一意の署名により、Google のサーバーでは、API キーを使用してリクエストを生成しているサイトにその処理が承認されていることを確認できます。

デジタル署名は、次の 2 ステップのプロセスで作成します。

  1. Google API Console から URL 署名シークレットを取得する
  2. URL 署名シークレットを使用して、デジタル署名を生成する

URL 署名シークレットを取得する(API キーを使用している Premium Plan ユーザー向け)

暗号化 URL 署名シークレットは、Google API Consoleで入手できます。シークレットは秘密鍵としても知られ、URL 用 Modified Base64 でエンコードされます。このシークレットは、ユーザーと Google で共有され、そのユーザーの API キーに固有です。URL 署名シークレットは安全に保管してください。シークレットをリクエストに渡したり、ウェブサイトに保存したり、公開フォーラムに投稿したりしないでください。この URL 署名シークレットを取得した誰かが、あなたの ID を使用してリクエストを偽装する可能性があります。

このリンクをクリックすると、URL 署名シークレットが含まれる API Console ページに直接移動できます。重要: [Project] プルダウン メニューでは、プレミアム プランを購入した際に作成されたプロジェクトを選択する必要があります。*

または、次の手順で URL 署名シークレットを表示します。

  1. Google API Console に移動します。
  2. [Project] ドロップダウン メニューから、Google Maps Premium プロジェクト*を選択します。
  3. [Dashboard] ページの API リストで、Google Street View Image API の名前をクリックします。API の詳細が表示され、[Overview] タブが開きます。
  4. [URL signing secret] タブをクリックします。

新しい URL 署名シークレットを取得するには、[Regenerate secret] をクリックします。前のシークレットは、新しいシークレットの生成後 24 時間で期限切れになります。24 時間を過ぎると、古いシークレットを含むリクエストは機能しなくなります。

* 注: [Project] ドロップダウン メニューでは、Premium Plan を購入した際に作成されたプロジェクトを選択する必要があります。プロジェクト名の先頭は、Google Maps APIs for Business or Google Maps for Work or Google Maps です。重要: 以前の Maps API for Business ライセンスを所有している場合は、API キーではなく、クライアント ID を使用する必要があります。

API キーと一緒に使用するデジタル署名を生成する

リクエストのデジタル署名を作成するには、次のセクションで説明する手順を実行します


クライアント ID と署名を使用する

API キーではなく、クライアント ID を使用して ストリートビュー API を認証するには、2 つの認証パラメータ(クライアント ID と一意のデジタル署名)が必要です。また、承認には URL の登録が必要です。

以前に認証のために API キーを使用しており、今回クライアント ID の使用に切り替える場合は、API を読み込む前に key パラメータを削除する必要があります。クライアント ID と API キーの両方が含まれている場合、API の読み込みに失敗します

クライアント ID と署名

Google Maps APIs Premium Plan ライセンスを購入すると、Google からクライアント ID秘密暗号化キーが含まれたウェルカム メールが届きます。

  • クライアント ID は、Google Maps APIs Premium Plan の特別な機能にアクセスする際に使用します。すべてのクライアント ID は接頭辞 gme- で始まります。クライアント ID は client パラメータの値として渡します。

    クライアント ID は承認した URL のみから機能するため、クライアント ID を秘密にする必要はありません。

  • 一意のデジタル署名は、秘密暗号化キーを使用して生成されます。この署名は signature パラメータの値として渡します。署名の生成については、以下のデジタル署名のセクションで詳しく説明しています。

    <img src="https://maps.googleapis.com/maps/api/streetview
      ?location=40.720032,-73.988354
      &size=400x400
      &fov=90&heading=235&pitch=10
      &client=YOUR_CLIENT_ID
      &signature=SIGNATURE">

クライアント ID または秘密暗号化キーを紛失した場合は、Google Cloud Support Portal にログインして、ページの左側にあるリンクの [Maps: Manage Client ID] をクリックすると、クライアント ID または秘密暗号化キーを再取得することができます。

レポート用のオプションのパラメータ

API 認証にクライアント ID を使用する場合、次のオプションのパラメータが使用できます。

  • channel を使用すると、レポートのさまざまなチャンネルを個別にグループ化して、追加でレポートの詳細を指定できます。詳細については、プレミアム プランのレポートの概要をご覧ください。

クライアント ID を使用している Premium Plan ユーザー向けのデジタル署名

client パラメータを使用して ストリートビュー API にリクエストを送信する場合は、ウェルカム メールで提供された秘密暗号化キーを使って生成したデジタル signature も必要です。

署名プロセスでは、暗号化アルゴリズムによって URL とキーが統合されます。生成された一意の署名により、Google のサーバーでは、クライアント ID を使用してリクエストを生成しているサイトにその処理が承認されていることを確認できます。また、署名は URL ごとに一意であるため、新しい署名の生成を求めることなく、クライアント ID を使用したリクエストを変更することはできません。

秘密暗号化キー

秘密暗号化 URL 署名キーはクライアント ID で発行され、ユーザーと Google 間の「シークレット共有キー」になります。この署名キーはユーザー個人のものであり、クライアント ID に固有のキーです。そのため、署名キーのセキュリティを確保する必要があります。このキーをリクエストで渡したり、ウェブサイトに保存したり、公開フォーラムに投稿したりしないでください。この署名キーを取得した誰かが、あなたの ID を使用してリクエストを偽装する可能性があります。

注: この秘密暗号化署名キーは、Google API Console で発行された API キーと同じではありません

秘密暗号化キーを紛失した場合は、Google Cloud Support Portal にログインし、[Maps: Manage Client ID] をクリックしてキーを再取得してください。

クライアント ID と一緒に使用するデジタル署名を生成する

リクエストのデジタル署名を作成するには、次のセクションで説明する手順を実行します

デジタル署名を生成する

API キーと一緒に使用するデジタル署名を生成する

次のステップを実行して、リクエストのデジタル署名(API キーと組み合わせて使用する)を作成します。これらの手順は、標準 API の使用に加えて、API キーで認証する Premium Plan ユーザーに適用されます。

  1. key パラメータに API キーを含めて、署名なしでリクエスト URL を作成します。標準以外の文字は URL にエンコードする必要があります。次に例を示します。

    https://maps.googleapis.com/maps/api/streetview?location=41.403609,2.174448&size=456x456&key=YOUR_API_KEY

    注: すべての Google サービスに UTF-8 文字エンコード(暗黙的に ASCII を含む)が必要です。アプリケーションが他の文字セットを使用して動作している場合は、UTF-8 を使用して URL を作成し、その文字セットが正しく URL にエンコードされるようにしてください。

  2. パスとクエリのみを残して、リクエストのドメイン部分を取り除きます。

    /maps/api/streetview?location=41.403609,2.174448&size=456x456&key=YOUR_API_KEY

  3. URL 用 Modified Base64 でエンコードされた URL 署名シークレットを取得し、HMAC-SHA1 アルゴリズムを使用して上記の URL に署名します。

    シークレットを元のバイナリ形式にデコードすることが必要になる場合があります。ほとんどの暗号化ライブラリでは、生成される署名はバイナリ形式です。

  4. 注: URL 用 Modified Base64 では、標準の Base64 の + 文字と / 文字がそれぞれ -_ に置き換えられるため、これらの Base64 署名は URL にエンコードする必要はなくなりました。

  5. 生成されたバイナリ署名を、URL 用 Modified Base64 でエンコードして、この署名を URL 内で渡すことができるように変換します。

  6. 生成された署名をリクエスト URL の signature パラメータ内に追加します。次に例を示します。

    https://maps.googleapis.com/maps/api/streetview?location=41.403609,2.174448&size=456x456&key=YOUR_API_KEY&signature=BASE64_SIGNATURE

サーバー側のコードを使用して URL 署名を実装する方法を示したサンプルについては、URL 署名のサンプル コードをご覧ください。

今すぐ URL に署名するには、以下に URL と URL 署名シークレットを入力します。URL はステップ 1 で説明した形式に従い、URL エンコードされている必要があります。


クライアント ID と一緒に使用するデジタル署名を生成する

無効な署名を使用して ストリートビュー API へのアクセスを試みると、HTTP 403 (Forbidden) エラーが発生します。アプリケーションを変更して URL 署名を使用するときは、署名をテストして、有効なリクエストが開始されるようにする必要があります。まず元の URL が有効かどうかに加えて、正しい署名が生成されるかどうかをテストする必要があります。

次の手順でリクエストのデジタル署名を作成します。

  1. client パラメータを必ず含め、署名なしでリクエスト URL を作成します。非標準文字は URL エンコードする必要があることに注意してください。

    https://maps.googleapis.com/maps/api/streetview?location=41.403609,2.174448&size=456x456&client=YOUR_CLIENT_ID

    注: すべての Google サービスに UTF-8 文字エンコード(暗黙的に ASCII を含む)が必要です。アプリケーションが他の文字セットを使用して動作している場合は、UTF-8 を使用して URL を作成し、その文字セットが正しく URL にエンコードされるようにしてください。

  2. パスとクエリのみを残して、リクエストのドメイン部分を取り除きます。

    /maps/api/streetview?location=41.403609,2.174448&size=456x456&client=YOUR_CLIENT_ID

  3. URL 用 Modified Base64 でエンコードされた秘密キーを取得し、HMAC-SHA1 アルゴリズムを使用して上記の URL に署名します。場合によっては、このキーを元のバイナリ形式にデコードする必要があります。なお、ほとんどの暗号化ライブラリで生成される署名はバイナリ形式です。

    注: URL 用 Modified Base64 では、標準の Base64 の + 文字と / 文字がそれぞれ -_ に置き換えられるため、これらの Base64 署名は URL にエンコードする必要はなくなりました。

  4. 生成されたバイナリ署名を、URL 用 Modified Base64 でエンコードして、この署名を URL 内で渡すことができるように変換します。

  5. この署名を signature パラメータの URL に付加します。

    https://maps.googleapis.com/maps/api/streetview?location=41.403609,2.174448&size=456x456&client=YOUR_CLIENT_ID&signature=BASE64_SIGNATURE

サーバー側のコードを使用して URL 署名を実装する方法を示したサンプルについては、URL 署名のサンプル コードをご覧ください。

今すぐ URL に署名するには、以下に URL と URL 署名シークレットを入力します。URL はステップ 1 で説明した形式に従い、URL エンコードされている必要があります。

URL 署名のサンプル コード

次のセクションでは、サーバー側のコードを使用して URL 署名を実装する方法について説明します。暗号化キーがユーザーに表示されないように、URL への署名は常にサーバー側で行う必要があります。

Python

次の例では、標準の Python ライブラリを使用して URL に署名しています。(コードのダウンロード

#!/usr/bin/python
# -*- coding: utf-8 -*-
""" Signs a URL using a URL signing secret """

import hashlib
import hmac
import base64
import urlparse

def sign_url(input_url=None, secret=None):
  """ Sign a request URL with a URL signing secret.

      Usage:
      from urlsigner import sign_url

      signed_url = sign_url(input_url=my_url, secret=SECRET)

      Args:
      input_url - The URL to sign
      secret    - Your URL signing secret

      Returns:
      The signed request URL
  """

  if not input_url or not secret:
    raise Exception("Both input_url and secret are required")

  url = urlparse.urlparse(input_url)

  # We only need to sign the path+query part of the string
  url_to_sign = url.path + "?" + url.query

  # Decode the private key into its binary format
  # We need to decode the URL-encoded private key
  decoded_key = base64.urlsafe_b64decode(secret)

  # Create a signature using the private key and the URL-encoded
  # string using HMAC SHA1. This signature will be binary.
  signature = hmac.new(decoded_key, url_to_sign, hashlib.sha1)

  # Encode the binary signature into base64 for use within a URL
  encoded_signature = base64.urlsafe_b64encode(signature.digest())

  original_url = url.scheme + "://" + url.netloc + url.path + "?" + url.query

  # Return signed URL
  return original_url + "&signature=" + encoded_signature

if __name__ == "__main__":
  input_url = raw_input("URL to Sign: ")
  secret = raw_input("URL signing secret: ")
  print "Signed URL: " + sign_url(input_url, secret)

Java

次の例では、JDK 1.8 から利用できる java.util.Base64 クラスを使用しています。それより古いバージョンでは、Apache Commons またはそれに類するものを使用する必要があります。(コードのダウンロード

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;  // JDK 1.8 only - older versions may need to use Apache Commons or similar.
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class UrlSigner {

  // Note: Generally, you should store your private key someplace safe
  // and read them into your code

  private static String keyString = "YOUR_PRIVATE_KEY";
  
  // The URL shown in these examples is a static URL which should already
  // be URL-encoded. In practice, you will likely have code
  // which assembles your URL from user or web service input
  // and plugs those values into its parameters.
  private static String urlString = "YOUR_URL_TO_SIGN";

  // This variable stores the binary key, which is computed from the string (Base64) key
  private static byte[] key;
  
  public static void main(String[] args) throws IOException,
    InvalidKeyException, NoSuchAlgorithmException, URISyntaxException {
    
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    
    String inputUrl, inputKey = null;

    // For testing purposes, allow user input for the URL.
    // If no input is entered, use the static URL defined above.    
    System.out.println("Enter the URL (must be URL-encoded) to sign: ");
    inputUrl = input.readLine();
    if (inputUrl.equals("")) {
      inputUrl = urlString;
    }
    
    // Convert the string to a URL so we can parse it
    URL url = new URL(inputUrl);
 
    // For testing purposes, allow user input for the private key.
    // If no input is entered, use the static key defined above.   
    System.out.println("Enter the Private key to sign the URL: ");
    inputKey = input.readLine();
    if (inputKey.equals("")) {
      inputKey = keyString;
    }
    
    UrlSigner signer = new UrlSigner(inputKey);
    String request = signer.signRequest(url.getPath(),url.getQuery());
    
    System.out.println("Signed URL :" + url.getProtocol() + "://" + url.getHost() + request);
  }
  
  public UrlSigner(String keyString) throws IOException {
    // Convert the key from 'web safe' base 64 to binary
    keyString = keyString.replace('-', '+');
    keyString = keyString.replace('_', '/');
    System.out.println("Key: " + keyString);
    // Base64 is JDK 1.8 only - older versions may need to use Apache Commons or similar.
    this.key = Base64.getDecoder().decode(keyString);
  }

  public String signRequest(String path, String query) throws NoSuchAlgorithmException,
    InvalidKeyException, UnsupportedEncodingException, URISyntaxException {
    
    // Retrieve the proper URL components to sign
    String resource = path + '?' + query;
    
    // Get an HMAC-SHA1 signing key from the raw key bytes
    SecretKeySpec sha1Key = new SecretKeySpec(key, "HmacSHA1");

    // Get an HMAC-SHA1 Mac instance and initialize it with the HMAC-SHA1 key
    Mac mac = Mac.getInstance("HmacSHA1");
    mac.init(sha1Key);

    // compute the binary signature for the request
    byte[] sigBytes = mac.doFinal(resource.getBytes());

    // base 64 encode the binary signature
    // Base64 is JDK 1.8 only - older versions may need to use Apache Commons or similar.
    String signature = Base64.getEncoder().encodeToString(sigBytes);
    
    // convert the signature to 'web safe' base 64
    signature = signature.replace('+', '-');
    signature = signature.replace('/', '_');
    
    return resource + "&signature=" + signature;
  }
}

C#

次の例では、デフォルトの System.Security.Cryptography ライブラリを使用して URL リクエストに署名しています。URL セーフ バージョンを実装するには、デフォルトの Base64 エンコーディングを変換する必要があります。(コードのダウンロード

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;

namespace SignUrl {

  public struct GoogleSignedUrl {

    public static string Sign(string url, string keyString) {
      ASCIIEncoding encoding = new ASCIIEncoding();

      // converting key to bytes will throw an exception, need to replace '-' and '_' characters first.
      string usablePrivateKey = keyString.Replace("-", "+").Replace("_", "/");
      byte[] privateKeyBytes = Convert.FromBase64String(usablePrivateKey);

      Uri uri = new Uri(url);
      byte[] encodedPathAndQueryBytes = encoding.GetBytes(uri.LocalPath + uri.Query);

      // compute the hash
      HMACSHA1 algorithm = new HMACSHA1(privateKeyBytes);
      byte[] hash = algorithm.ComputeHash(encodedPathAndQueryBytes);

      // convert the bytes to string and make url-safe by replacing '+' and '/' characters
      string signature = Convert.ToBase64String(hash).Replace("+", "-").Replace("/", "_");
            
      // Add the signature to the existing URI.
      return uri.Scheme+"://"+uri.Host+uri.LocalPath + uri.Query +"&signature=" + signature;
    }
  }

  class Program {

    static void Main() {
    
      // Note: Generally, you should store your private key someplace safe
      // and read them into your code

      const string keyString = "YOUR_PRIVATE_KEY";
  
      // The URL shown in these examples is a static URL which should already
      // be URL-encoded. In practice, you will likely have code
      // which assembles your URL from user or web service input
      // and plugs those values into its parameters.
      const  string urlString = "YOUR_URL_TO_SIGN";
      
      string inputUrl = null;
      string inputKey = null;
    
      Console.WriteLine("Enter the URL (must be URL-encoded) to sign: ");
      inputUrl = Console.ReadLine();
      if (inputUrl.Length == 0) {
        inputUrl = urlString;
      }     
    
      Console.WriteLine("Enter the Private key to sign the URL: ");
      inputKey = Console.ReadLine();
      if (inputKey.Length == 0) {
        inputKey = keyString;
      }
      
      Console.WriteLine(GoogleSignedUrl.Sign(inputUrl,inputKey));
    }
  }
}

認証の問題のトラブルシューティング

リクエストが不正であるか、または無効な署名を提供する場合は、Google Street View Image API から HTTP 403 (Forbidden) エラーが返されます。

個々の URL をトラブルシューティングするために、URL Signing Debugger を使用できます。これを使用すると、URL やアプリケーションによって生成された署名をすばやく検証できます。

または、Google Maps APIs Premium Plan ユーザーは、Google Cloud Support Portal にログインし、[Resources] > [Google Maps APIs Premium Plan online tools] > [URL Signing Debugger for Web Service and Image APIs] を選択して、個々の URL のトラブルシューティングを行うことができます。

フィードバックを送信...

Google Street View Image API
ご不明な点がありましたら、Google のサポートページをご覧ください。