Google Cloud Console でのクライアント ID の管理場所
プレミアム プランのクライアント ID 管理機能は、サポート ポータルから、マップの [サービス アカウント] セクションにある [認証情報] ページの Cloud Console に移行します。
![[認証情報] ページの新しい [クライアント ID] 領域](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/premium/reports/images/new-client-id-area.png?authuser=3&hl=ja)
注: 現在、Google Maps Platform プレミアム プランは、新規お申し込みまたは新規お客様のご利用を受け付けていません。
Google Maps Platform プレミアム プランのクライアント ID を使用できるのは、特定の承認済み URL に制限されています。承認されていない URL でクライアント ID を使用しようとすると、エラー メッセージが表示されます。
この記事は、この問題が発生して、承認が必要な正確な URL を特定する必要がある Google Maps Platform プレミアム プランの利用者の方を対象としています。
基本
無関係なウェブサイトでクライアント ID が不正に使用されないようにするため、承認された URL 以外ではクライアント ID を使用できないように制限されています。各 URL の指定では、1 つのウェブページだけに一致する限定的なパターンや、ドメイン全体に一致する包括的なパターンを使用できます。
承認された URL のリストを取得したり、追加の URL を承認したりするには、[認証情報] ページに移動して [クライアント ID] セクションをクリックします。
一度に追加できる URL は 100 件までです。クライアント ID は、最大 3,000 件の承認済み URL に関連付けることができます。アプリケーションでホストする Google Maps コンテンツが 3,000 を超える場合は、代わりに API キーを使用してください。
URL の承認方法について詳しくは、デベロッパー ガイドをご覧ください。
問題
クライアント ID 用に承認されていない URL にあるアプリケーションの場合、Google Maps Platform でそのクライアント ID を使用することはできません。ユーザーが、このようなアプリケーションを使おうとすると、エラー メッセージが表示されます。エラー メッセージの内容は、アプリケーションがロードしようとする特定の API よって異なります。ユーザーは Maps JavaScript API に依存する機能は使用できません。
- Maps JavaScript API の場合は、次のメッセージが表示されます。
このページでは Google マップの要素を表示できませんでした。この URL では指定した Google マップ クライアント ID の使用が許可されていません。エラーコード: UnauthorizedURLForClientIdMapError
- Maps JavaScript API v3.18 以降を使用している場合は、次のメッセージが表示されます。
このアプリケーションでは、Google Maps Platform は使用できません。このサイトでは、指定した Google マップのクライアント ID の使用が許可されていません。このアプリケーションの所有者の方の場合は、URL 登録の詳細について、デベロッパー ガイドをご覧ください。
クライアント ID をアプリケーションから削除しても、有効な対策にはなりません*。削除すると、そのアプリケーションに対する Google Maps Platform プレミアム プランの権限がすべて失われます。これにより、以下の特典を利用できなくなります。
- 高稼働率が保証されたサービスレベル契約(SLA)
- カスタマー サポート
- ウェブサービスの制限の引き上げ
- 商用レベルの利用規約
- 職場内のイントラネット アプリケーションのサポート
つまり、Google Maps Platform プレミアム プランの有効なクライアント ID を正しく使用していない内部専用または有料版のアプリケーションは、標準の Google Maps Platform 利用規約に準拠していないことになります。
ソリューション
正しい解決策は、クライアント ID を使用する正しい URL を特定して承認することです。
ほとんどの場合、アプリケーション単位で、クライアント ID を使用する認証を受ける必要があります。アプリケーションは多くの場合、パターンが共通する複数の URL を使用します。たとえば、店舗検索では example.com/stores
や stores.example.com
といった URL を使用できます。アプリケーションが使用するすべての URL に合致する単一の 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 Platform が読み込まれることがあります。これは、<iframe>
タグが使用されている場合や、API をロードするページの URL がサーバー上で動的に生成されてブラウザに送信される場合などが該当します。このような場合に正しい URL を特定するには、ブラウザから Google サーバーへの HTTP リクエストを精査する必要があります。
承認の必要がある URL は、API をロードするためにブラウザが Google に送信するリクエストの Referer
ヘッダー内にあります。各 API は異なる URL からロードされます。
- Maps JavaScript API:
https://maps.googleapis.com/maps/api/js?...
- Maps JavaScript API V2:
https://maps.googleapis.com/maps?file=api&...
maps.googleapis.com
へのリクエストは、アプリケーションで設定されている API のロード方法に応じて、すべて maps.google.com
または maps-api-ssl.google.com
に送信されます。そのため、上述のリクエストを探す場合、一般的には重要なのはそのパス(太字部分)です。
ブラウザの HTTP ヘッダーから特定する
上記のリクエストの Referer
ヘッダーを精査する前に、この情報をブラウザから取得する必要があります。次のように、すべての主要なブラウザで HTTP ヘッダを取得するための無料のツールが提供されています。
- Google Chrome のデベロッパー ツール
- Firefox の LiveHTTPHeaders
- Safari のデベロッパー ツール
- Internet Explorer または Windows で動作するその他のブラウザ用の Fiddler
注: Fiddler2 で HTTPS トラフィックを取得するには設定が必要です。詳しくは、こちらをご覧ください。
ブラウザから直接 HTTP ヘッダーを取得できない場合は、Wireshark などのネットワーク プロトコル アナライザーを使用すると HTTP トラフィックを取得できます。このツールは、上述のツールより操作が複雑になる可能性があります。このツールに慣れていない場合は、ウェブ上のいくつかの Wireshark チュートリアルをご確認ください。
使用するツールを決めたら、以下の手順に従って承認の必要がある URL を特定します。
- 取得ツールを起動します。このツールがブラウザから HTTP リクエストを取得していることを確認します。
- クライアント ID を使用して Google Maps Platform をロードすることができないアプリケーションに、ブラウザからアクセスします。上記のいずれかのエラー メッセージが表示されます。
- HTTP トラフィックの取得を終了します。これで、取得したトラフィックを簡単に精査できます。
- クライアント ID を使用して Google Maps Platform をロードしようとしているリクエストを見つけます。たとえば、アプリケーションが Maps JavaScript API を読み込もうとしている場合は、次のようなリクエストを探します。
GET /maps/api/js?client=gme-yourclientid HTTP/1.1
- HTTP リクエスト ヘッダーは、その行の直後にあります(改行はありません)。次のような文字列を見つけます。
Referer: http://www.example.com/stores/find?zip=94043
- この行の URL が、クライアント ID を使用するために承認が必要な URL です。
ブラウザの JavaScript コンソールから特定
承認されていないサイトで API キーまたはクライアント ID を使用している場合、Maps JavaScript API は window.console
にエラー メッセージを書き込みます。そのエラー メッセージから、正しい URL を特定できます。コンソールで、次のようなエラー メッセージを見つけます。
Google Maps Platform error: UnauthorizedURLForClientIdMapError ... Your site URL to be authorized: http://www.example.com/stores/find?zip-94043
エラー メッセージを見つける方法については、ブラウザでエラーを確認する方法をご覧ください。
共通パターンの特定
アプリケーション全体でクライアント ID を使用して Google Maps Platform をロードできるようにするには、デベロッパー ガイドで説明されているルールに沿って、アプリケーションで使用されているすべての URL に共通するパターンを見つけ、このパターンを含む URL を承認する必要があります。
通常、これは 1 つのディレクトリ(例: example.com/stores
)またはサブドメイン(例: stores.example.com
)を表す単純なパターンになります。これらのパターンは、数個の URL を選ぶだけで簡単に抽出できるケースがほとんどです。
複雑なアプリケーションを扱う場合は、ユーザーがマップを開いたときに表示されるさまざまな URL を使用して上記の手順を繰り返さなければならない場合があります。ただし、この方法は手間と時間がかかり、結果的に不完全な URL セットになる可能性があります。そのようなアプリケーションで最も URL パターンを特定できる可能性が高いのは、そのデベロッパーです。