Fehlerbehebung im Zusammenhang mit der Autorisierung von Google Maps APIs Premium Plan-URLs

Google Maps APIs Premium Plan-Client-IDs sind auf speziell autorisierte URLs beschränkt. Wenn Sie versuchen, Ihre Client-ID für eine URL zu verwenden, die nicht autorisiert wurde, erhalten Sie eine Fehlermeldung.

Dieser Artikel richtet sich an Google Maps APIs Premium Plan-Kunden, bei denen dieses Problem auftritt und die die genaue URL ermitteln müssen, die autorisiert werden muss.

Grundlagen

Um zu verhindern, dass Ihre Client-ID durch Dritte auf deren eigener Website genutzt wird, ist Ihre Client-ID auf eine Liste von URLs beschränkt, die Sie autorisieren müssen. Eine URL kann sowohl spezifisch als auch generisch sein (das heißt, auf eine einzelne Webseite oder eine ganze Domäne verweisen).

So rufen Sie eine Liste der autorisierten URLs ab oder autorisieren weitere URLs:

  1. Melden Sie sich im Google Cloud Support Portal an.
  2. Klicken Sie im Menü auf der linken Seite auf Maps: Manage Client ID.

Sie können bis zu 100 URLs auf einmal hinzufügen. Die Gesamtzahl der URLs beträgt 3.000. Falls Sie höhere Grenzwerte benötigen, wenden Sie sich an den Google Cloud Support.

Weitere Informationen zum Autorisieren von URLs finden Sie im Entwickler-Leitfaden.

Das Problem

Eine Anwendung, die über eine nicht für Ihre Client-ID autorisierte URL zur Verfügung gestellt wird, kann die Google Maps APIs nicht mit Ihrer Client-ID nutzen. Ein Nutzer, der versucht, eine solche Anwendung zu verwenden, erhält abhängig von der spezifischen API, die in die Anwendung geladen werden soll, eine Fehlermeldung. Demzufolge können Nutzer keine Funktionen verwenden, die von der Google Maps JavaScript API abhängig sind.

  • Die Google Maps JavaScript API zeigt die folgende Meldung an:

    This page was unable to display a Google Maps element. This URL is not authorized to use the provided Google Maps Client ID. Error Code: UnauthorizedURLForClientIdMapError

  • Wenn Sie die Google Maps JavaScript API v3.18 oder eine ältere Version verwenden, wird folgende Meldung angezeigt:

    Google has disabled use of the Google Maps APIs for this application. This site is not authorized to use the Google Maps client ID provided. If you are the owner of this application, you can learn more about registering URLs in the developer's guide.

Das Entfernen der Client-ID aus der Anwendung ist keine zulässige Problemlösung.* Sie verlieren hierdurch alle Google Maps APIs Premium Plan-Rechte für die betreffende Anwendung. Das bedeutet, Sie verlieren Ihren Anspruch auf:

  • Ein solides Service-Level-Agreement (SLA)
  • Kundensupport
  • Höhere Grenzwerte für Webdienste
  • Handelsübliche Geschäftsbedingungen
  • Support für Intranetanwendungen an Ihrem Arbeitsplatz

Das bedeutet, dass interne oder kostenpflichtige Anwendungen, die keine gültige Google Maps APIs Premium Plan-Client-ID korrekt nutzen, nicht im Einklang mit den Nutzungsbedingungen für die kostenlosen Google Maps APIs stehen.

Die Lösung

Die korrekte Lösung dieses Problems besteht darin, der richtigen URLs, für die Ihre Client-ID genutzt werden sollen, zu ermitteln und zu autorisieren.

In den meisten Fällen müssen Sie eine Anwendung autorisieren, die Ihre Client-ID nutzen soll. Für Anwendungen werden häufig mehrere URLs mit einem gemeinsamen Muster verwendet, z. B. ein Filialfinder, den Sie unter example.com/stores oder stores.example.com finden können. Sie müssen eine URL ermitteln, die allen von Ihrer Anwendung genutzten URLs entspricht.

Hinweis: Durch die Autorisierung von www.example.com wird stores.example.com oder eine andere Unterdomäne von example.com nicht autorisiert.

Eine von Ihnen autorisierte URL kann sowohl spezifisch als auch generisch sein (das heißt, auf eine einzelne Webseite oder eine ganze Domäne einschließlich ihrer Unterdomänen verweisen). Weitere Informationen finden Sie im Entwickler-Leitfaden. Wir empfehlen die Autorisierung von URLs, die einer recht umfangreichen Gruppe von URLs entsprechen, solange diese von Ihnen verwaltet werden.

Hinweis: Die Autorisierung einer vollständigen Domäne wird nur empfohlen, wenn Ihre Organisation die vollständige Kontrolle über den gesamten Inhalt dieser Domäne besitzt. Beispielsweise erhält durch die Autorisierung der gesamten Domäne blogspot.com jeder Nutzer die Möglichkeit, auf Ihre Kosten Ihre Client-ID in dieser Domäne zu nutzen. Stattdessen sollten Sie nur einen bestimmten Blog (z. B. googlegeodevelopers.blogspot.com) oder eine bestimmte Seite in diesem Blog autorisieren.

So ermitteln Sie die richtige URL

Normalerweise finden Sie die URL in der Zielleiste Ihres Browsers. Bei öffentlichen Websites, die keine <iframe>-Tags nutzen, ist dies normalerweise einfach. Im Zweifelsfall können Sie dies auf die folgende Weise prüfen.

Für komplexe Anwendungen werden die Google Maps APIs möglicherweise über eine andere URL als die URL in der Zielleiste des Nutzers geladen. Dies ist der Fall, wenn <iframe>-Tags verwendet werden oder wenn die URL der Seite, die die APIs lädt, dynamisch auf dem Server generiert und dann an den Browser gesendet wird. Um in diesen Fällen die richtige URL zu finden, müssen bestimmte HTTP-Anforderungen untersucht werden, die vom Browser an die Google-Server gesendet werden.

Die zu autorisierende URL entspricht der URL im Header Referer für die Anforderungen, die der Browser zum Laden der API an Google sendet. Jede API wird über eine andere URL geladen:

Alle Anforderungen für maps.googleapis.com können an maps.google.com oder maps-api-ssl.google.com gesendet werden, je nachdem, wie die Anwendung zum Laden der API konfiguriert ist. In den obigen Anforderungen ist daher normalerweise der Pfad (fett formatiert) die Information, auf die es ankommt.

Über die HTTP-Header im Browser

Bevor Sie den Header Referer in den obigen Anforderungen untersuchen können, müssen Sie diesen zunächst über den Browser erfassen. In allen gängigen Browsern stehen verschiedene kostenlose Tools zum Erfassen von HTTP-Headern zur Verfügung:

Hinweis: Zum Erfassen von HTTPS-Datenverkehr müssen Sie Fiddler2 konfigurieren. Weitere Informationen finden Sie hier.

Falls Sie HTTP-Header nicht direkt im Browser erfassen können, können Sie versuchen, den HTTP-Datenverkehr über ein Tool zur Analyse von Netzwerkprotokollen wie Wireshark zu erfassen. Dieses Tool ist hinsichtlich seiner Funktionsweise möglicherweise komplexer als die oben genannten Tools. Falls Sie nicht vertraut mit dem Tool sind, finden Sie im Internet einige Anleitungen zu Wireshark.

Führen Sie dann im Tool Ihrer Wahl die folgenden Schritte aus, um die zu autorisierende URL zu ermitteln:

  1. Starten Sie das Erfassungstool. Vergewissern Sie sich, dass HTTP-Anforderungen über den Browser erfasst werden.
  2. Verweisen Sie im Browser auf die Anwendung, die nicht in der Lage ist, die Google Maps APIs mithilfe Ihrer Client-ID zu laden. Sie sollten nun eine der oben beschriebenen Fehlermeldungen erhalten.
  3. Beenden Sie das Erfassen des HTTP-Datenverkehrs. Auf diese Weise lässt sich der erfasste Datenverkehr leichter untersuchen.
  4. Ermitteln Sie die Anforderung, die versucht, die Google Maps APIs mithilfe Ihrer Client-ID zu laden. Beispiel: Wenn die Anwendung versucht, die Google Maps JavaScript API zu laden, suchen Sie nach einer Anforderung ähnlich der folgenden:
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. Unmittelbar nach dieser Zeile folgen HTTP-Anforderungsheader ohne Zeilenumbruch. Suchen Sie nach einem Header ähnlich dem folgenden:
    Referer: http://www.example.com/stores/find?zip=94043
  6. Die URL in dieser Zeile muss für die Verwendung Ihrer Client-ID autorisiert werden.

Über die JavaScript-Konsole im Browser

Wenn Sie den API-Schlüssel oder die Client-ID in einer nicht autorisierten Website verwenden, schreibt die Google Maps JavaScript API Fehlermeldungen in window.console. Die korrekte URL finden Sie in der Fehlermeldung. Suchen Sie in der Konsole nach Fehlermeldungen, die der folgenden ähneln:

Google Maps APIs error: UnauthorizedURLForClientIdMapError ...
Your site URL to be authorized: http://www.example.com/stores/find?zip-94043

Hilfe für die Suche nach Fehlermeldungen finden Sie im Abschnitt zur Überprüfung von Fehlern im Browser.

Ermitteln des gemeinsamen Musters

Um sicherzustellen, dass die gesamte Anwendung die Google Maps APIs mithilfe Ihrer Client-ID laden kann, müssen Sie ein gemeinsames Muster bei allen von der Anwendung verwendeten URLs finden und eine URL autorisieren, die dieses Muster repräsentiert. Befolgen Sie hierfür die im Entwickler-Leitfaden erläuterten Regeln.

Häufig ist dies einfach ein Verzeichnis (z. B. example.com/stores) oder eine Unterdomäne (z. B. stores.example.com), die sich oft problemlos aus einigen URLs ableiten lassen.

Bei komplexen Anwendungen müssen Sie die obigen Schritte möglicherweise mit einer Reihe von nutzerseitigen URLs wiederholen, mit denen eine Karte angezeigt wird. Diese Vorgehensweise ist jedoch unter Umständen zu aufwendig und führt möglicherweise dennoch nicht zu einer vollständigen Gruppe von URLs. Für eine solche Anwendung wird empfohlen, das URL-Muster von den Entwicklern der Anwendung zu erfragen.