Google Maps APIs for Work を実装する際の承認に関するトラブルシューティング

このページは、以前の Maps APIs for Work または Maps API for Business ライセンスのユーザーのみを対象にしています。このページの内容は、2016 年 1 月から利用可能になった新しい Google Maps APIs Premium Plan のユーザーには適用されません。

Google Cloud Support チーム
2011 年 12 月

Google Maps APIs for Work クライアント ID は、明確に承認された URL に使用が制限されています。承認されていない URL でクライアント ID を使おうとすると、エラー メッセージが表示されます。

この記事は、この問題が発生し、承認が必要な正確な URL を特定する必要がある Google Maps APIs for Work のユーザーを対象としています。

基本

無関係なウェブサイトでクライアント ID が不正に使用されないようにするため、承認された URL 以外ではクライアント ID を使用できないように制限されています。各 URL の指定では、1 つのウェブページだけに一致する限定的なパターンや、ドメイン全体に一致する包括的なパターンを使用できます。

承認された URL のリストを取得したり、追加の URL を承認したりするには、次の手順を実行します。

  1. Google Cloud Support Portal にログインします。
  2. 左サイドメニューで、[Maps:Manage Client ID] をクリックします。

最大 100 個の URL を一度に追加できます。追加できる URL の総数は 3,000 個です。さらに多くの URL を追加する必要がある場合は、Google Cloud Support にお問い合わせください。

URL の承認に関するその他の詳細については、デベロッパー ガイドをご覧ください。

問題

クライアント ID に対して承認されていない URL で動作するアプリケーションは、そのクライアント ID で Google Maps APIs を使用できません。ユーザーが、このようなアプリケーションを使おうとすると、エラー メッセージが表示されます。エラー メッセージの内容は、アプリケーションがロードしようとする特定の API よって異なります。

  • Google Maps JavaScript API では、次のメッセージが表示されます。

    このページでは Google マップの要素を表示できませんでした。この URL では指定した Google マップ クライアント ID の使用が許可されていません。Error Code:UnauthorizedURLForClientIdMapError

  • Google Maps JavaScript API v3.18 以降を使用している場合、次の内容を表すメッセージが表示されます。

    Google はこのアプリでの Maps API の使用を無効にしました。このサイトでは指定した Google マップ クライアント ID の使用が許可されていません。このアプリの所有者は、デベロッパー ガイドで URL 登録の詳細についてご確認ください。

  • Google Static Maps API および Google Street View Image API ではエラー メッセージは表示されません。ただし、未承認の URL からのクライアント ID を使用したこれらの API のリクエストは Google Maps APIs for Work SLA の対象外であり、テクニカル サポートを利用できません。

実際の影響としては、ユーザーは Google Maps JavaScript API に依存する機能を使用できません。

この問題の回避策はクライアント ID をアプリケーションから削除することですが、これを行うと、そのアプリケーションに付与されている Google Maps APIs for Work の権限がすべて失われます。これにより、以下の特典を利用できなくなります。

  • 堅牢なサービスレベル契約(SLA)
  • カスタマー サポート
  • ウェブサービスの制限の引き上げ
  • 商用レベルの利用規約
  • 職場内のイントラネット アプリケーションのサポート

これは、有効な Google Maps APIs for Work クライアント ID を正しく使用しない内部専用または有料のアプリケーションは、無料版の Google Maps APIs 利用規約に準拠しなくなることを意味します。

そのため、クライアント ID の除去は通常は有効な対応とは言えません。

解決策

この問題の正しい解決方法は、クライアント ID を使用する正しい URL を特定して承認することです。

多くの場合、クライアント ID を使用できるようにアプリケーションを承認する必要があります。一般的なアプリケーションでは、共通のパターンを持つ URL が使用されます。たとえば、店舗案内は example.com/stores または stores.example.com などに存在します。アプリケーションで使用されるすべての URL に一致するパターンを特定する必要があります。

注: www.example.com を承認しても stores.example.com やその他の example.com のサブドメインは承認されません

承認する各 URL の指定では、1 つのウェブページだけに一致する限定的なパターンや、サブドメインを含めたドメイン全体に一致する包括的なパターンを使用できます。詳細については、デベロッパー ガイドをご覧ください。自社で管理している URL にできるだけ幅広く一致するように URL パターンを指定して承認することをお勧めします。

注: ドメイン内のすべてのコンテンツを自社で完全に管理している場合を場合を除き、ドメイン全体を承認することは推奨されません。たとえば、blogspot.com ドメイン全体を承認すると、そのドメインから誰でもお客様のクライアント ID を使用できるようになり、お客様と関係のない費用負担が発生するおそれがあります。代わりに、特定のブログのみ(例: googlegeodevelopers.blogspot.com)またはそのブログの特定のページのみを承認することをお勧めします。

正しい URL の特定方法

通常、URL はブラウザのロケーション バーで特定します。<iframe> タグを使用しない一般公開ウェブサイトでは、基本的にこの方法が簡単です。確証が持てない場合は、以下の方法で確認できます。

複雑なアプリケーションでは、ユーザーのロケーション バーに表示される URL 以外の URL から Google Maps APIs をロードする場合があります。これは、<iframe> タグが使用されている場合や、API をロードするページの URL がサーバー上で動的に生成されてブラウザに送信される場合などが該当します。このような場合に正しい URL を特定するには、ブラウザから Google サーバーへの HTTP リクエストを精査する必要があります。

承認の必要がある URL は、API をロードするためにブラウザが Google に送信するリクエストの Referer ヘッダ内にあります。各 API は異なる URL からロードされます。

maps.googleapis.com へのリクエストは、アプリケーションで設定されている API のロード方法に応じて、maps.google.com または maps-api-ssl.google.com に送信されます。したがって、上述のリクエストを探す場合、重要なのはそのパス(太字部分)です。

ブラウザの HTTP ヘッダから特定する

上述のリクエストの Referer ヘッダを精査する前に、この情報をブラウザから取得する必要があります。次のように、すべての主要なブラウザで HTTP ヘッダを取得するための無料のツールが提供されています。

注: Fiddler2 で HTTPS トラフィックを取得するには調整が必要です。詳細については、こちらをご覧ください。

ブラウザから直接 HTTP ヘッダを取得できない場合、Wireshark などのネットワーク プロトコル アナライザーを使用すると HTTP トラフィックを取得できます。このツールは、上述のツールより操作が複雑になる可能性があります。このツールに慣れていない場合は、ウェブ上のいくつかの Wireshark チュートリアルをご確認ください。

使用するツールを決めたら、以下の手順に従って承認の必要がある URL を特定します。

  1. 取得ツールを起動します。このツールがブラウザから HTTP リクエストを取得していることを確認します。
  2. クライアント ID を使用して Maps API をロードできないアプリケーションに、ブラウザでアクセスします。上述のいずれかのエラー メッセージが表示されます。
  3. HTTP トラフィックの取得を終了します。これで、取得したトラフィックを簡単に精査できます。
  4. クライアント ID を使用して Maps API をロードしようとしているリクエストを特定します。たとえば、アプリケーションが Google Maps JavaScript API をロードしようとしている場合、次のようなリクエストを見つけます。
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. HTTP リクエスト ヘッダは、その行の直後にあります(改行はありません)。次のような文字列を見つけます。
    Referer: http://www.example.com/stores/find?zip=94043
  6. この行の URL が、クライアント ID を使用するために承認が必要な URL です。

共通パターンの特定

アプリケーション全体で、クライアント ID を使用して Google Maps APIs をロードできるようするためには、アプリケーションが使用するすべての URL にわたる共通パターンを特定して、このパターンを表す URL を承認する必要があります。デベロッパー ガイドで説明しているルールを以下に示します。

通常、これは 1 つのディレクトリ(例: example.com/stores)またはサブドメイン(例: stores.example.com)を表す単純なパターンになります。 通常、これらのパターンは、数個の URL を選ぶだけで簡単に抽出できます。

複雑なアプリケーションを扱う場合は、ユーザーがマップを開いたときに表示されるさまざまな URL を使用して上記の手順を繰り返さなければならない場合があります。ただし、この方法は多くの時間と労力を要し、結果的に不完全な URL セットとなる可能性があります。このようなアプリケーションにおいては、その開発者が最も URL パターンを特定しやすい立場にあると考えられます。