Es kann losgehen!

Bevor Sie mit der Entwicklung beginnen, lesen Sie bitte unsere Entwicklerdokumentation.

Die Google Street View Image API aktivieren

Zum Einstieg führen wir Sie durch die Google Developers Console, wo Sie vorab Folgendes tun müssen:

  1. Ein Projekt erstellen oder auswählen
  2. Die Google Street View Image API aktivieren
  3. Zugehörige Schlüssel erstellen
Weiter

Get a Key and Signature/Authentication

Alle Google Street View Image API-Anwendungen erfordern eine Authentifizierung.

  • Standard-API-Nutzer: Wenn Sie die API dem Standard Plan gemäß nutzen, müssen Sie einen API-Schlüssel verwenden. Außerdem empfehlen wir das Einschließen einer digitalen Signatur. Unter bestimmten Umständen ist die digitale Signatur obligatorisch. Lesen Sie weitere Informationen über API-Schlüssel und digitale Signaturen für die Standard-API.
  • Premium Plan-Nutzer: Wenn Sie die API dem Google Maps APIs Premium Plan gemäß nutzen, haben Sie zwei Authentifizierungsmöglichkeiten:
    • Verwenden Sie einen API-Schlüssel, der in der Google API Console im Rahmen des Google Maps APIs Premium Plan-Projekts eingerichtet wurde (das beim Kauf des Premium Plan für Sie angelegt wurde), zusammen mit einer digitalen Signatur,
        oder
    • Schließen Sie anstelle des API-Schlüssels Ihre Client-ID und eine digitale Signatur ein.

    Informationen zur Auswahl der besten Authentifizierungsmethode finden Sie im nachfolgenden Abschnitt Google Maps APIs Premium Plan.

Authentifizierung für die Standard-API – API-Schlüssel und digitale Signaturen

Das Einschließen eines Schlüssels in der Anforderung ermöglicht Ihnen die Überwachung der Nutzung der API Ihrer Anwendung in der Google API Console und den Zugriff auf ein großzügiges kostenloses Tageskontingent. Weiterhin kann Google Sie ggf. bezüglich Ihrer Anwendung kontaktieren.

  • Für die Standard-API besteht die empfohlene Authentifizierungsmethode darin, einen API-Schlüssel und eine digitale Signatur in alle Anforderungen an die Google Street View Image API einzuschließen. Der API-Schlüssel ist erforderlich. Die digitale Signatur ist erforderlich, wenn Sie Vorausbezahlung aktivieren. Anhand der eindeutigen Signatur können unsere Server prüfen, ob Anforderungen zur Websitegenerierung unter Verwendung Ihres API-Schlüssels dazu auch autorisiert sind.
  • Bei Verwendung der Standard-API ohne Aktivierung der Vorausbezahlung benötigen Sie einen API-Schlüssel. Die digitale Signatur wird empfohlen und ist nur optional.

API-Schlüssel anfordern

Für die ersten Schritte bei der Verwendung von Google Street View Image API klicken Sie auf die folgende Schaltfläche. Nun werden Sie durch den Vorgang zur Aktivierung der Google Street View Image API und zur Anforderung eines API-Schlüssels geleitet.

Schlüssel anfordern

Alternativ können Sie auch wie folgt einen API-Schlüssel anfordern:

  1. Navigieren Sie zu Google API Console.
  2. Ein Projekt erstellen oder auswählen
  3. Klicken Sie auf Continue, um die API zu aktivieren.
  4. Fordern Sie auf der Seite Credentials einen API-Schlüssel an (und legen Sie die Einschränkungen für den API-Schlüssel fest).
    Hinweis: Wenn Sie bereits über einen API-Schlüssel ohne Einschränkungen oder einen Schlüssel mit Browsereinschränkungen verfügen, können Sie diesen Schlüssel verwenden.
  5. Um Kontingentdiebstahl zu verhindern, schützen Sie Ihren API-Schlüssel anhand der bewährten Methoden.
  6. (Optional) Abrechnung aktivieren. Weitere Informationen finden Sie unter Nutzungsbeschränkungen.


Sie können auch nach einem vorhandenen Schlüssel in Google API Console suchen.

Weitere Informationen zur Verwendung der Google API Console finden Sie in der Hilfe zur API Console.

Einschränkungstypen für API-Schlüssel

Google Maps APIs sind für Android- oder iOS-Apps, Webbrowser und über HTTP-Webdienste verfügbar. Ein generischer (nicht eingeschränkter) API-Schlüssel kann für APIs auf jeder beliebigen Plattform verwendet werden. Optional können Sie dem API-Schlüssel eine Einschränkung hinzufügen (zum Beispiel die IP-Adresse). Nach der Einschränkung funktioniert der Schlüssel nur auf Plattformen, die den jeweiligen Einschränkungstyp unterstützen. Weitere Infos zu Schlüsseln und Anmeldedaten.

Digitale Signaturen für die Standard-API

Anforderungen an Google Street View Image API müssen einen signature-Parameter einschließen, der eine digitale Signatur enthält, die Sie mit einen gemeinsamen geheimen URL-Signaturschlüssel generieren müssen. Ihr gemeinsamer geheimer Schlüssel ist in Google API Console verfügbar.

Hinweis: Wenn Sie die Vorausbezahlung aktiviert haben, ist die digitale Signatur erforderlich. Beim Überschreiten der Obergrenze der 25.000 kostenlos pro Tag herunterladbaren Karten werden weitere bis zum Tagesende heruntergeladene Karten berechnet. Zu berechnende Kartenladevorgänge ohne digitale Signatur schlagen fehl. Wenn Sie die Standard-API verwenden, ohne die Vorausbezahlung aktiviert zu haben, wird die digitale Signatur empfohlen, ist aber nicht erforderlich.

Der Signaturvorgang verwendet einen Verschlüsselungsalgorithmus, um die URL und Ihren gemeinsamen geheimen Schlüssel zu kombinieren. Anhand der sich ergebenden eindeutigen Signatur können unsere Server prüfen, ob Anforderungen zur Websitegenerierung unter Verwendung Ihres API-Schlüssels dazu auch autorisiert sind.

Ihren geheimen URL-Signaturschlüssel anfordern

Ihr kryptografischer geheimer URL-Schlüssel ist in Google API Console verfügbar. Der geheime Schlüssel, auch privater Schlüssel genannt, wird mit einem modifizierten Base64-Verfahren für URLs codiert. Dieser geheime Schlüssel wird zwischen Ihnen und Google geteilt und ist für Ihren API-Schlüssel eindeutig. Bitte schützen Sie Ihren geheimen URL-Signaturschlüssel. Geben Sie ihn nicht aufgrund von Anforderungen weiter, speichern Sie ihn nicht auf Websites oder posten Sie ihn nicht in öffentlichen Foren. Jede Person, die diesen geheimen URL-Signaturschlüssel erlangt, kann Anforderungen unter Verwendung Ihrer Identität manipulieren.

Klicken Sie auf diesen Link, um direkt zur API Console-Seite zu navigieren, die Ihren geheimen URL-Signaturschlüssel enthält. Wichtig: Stellen Sie sicher, im Drop-down-Menü „Project“ das Projekt auszuwählen, das Sie auch beim Erstellen des API-Schlüssels für die Google Street View Image API verwendet haben.

Alternativ können Sie auch wie folgt Ihren geheimen URL-Signaturschlüssel anzeigen:

  1. Navigieren Sie zu Google API Console.
  2. Wählen Sie im Drop-down-Menü „Project“ das Projekt aus, das Sie beim Erstellen des API-Schlüssels für die Google Street View Image API verwendet haben.
  3. Klicken Sie in der Liste der APIs auf der Dashboard-Seite auf den Namen der Google Street View Image API. Es werden die API-Details angezeigt, während der Tab Overview geöffnet ist.
  4. Klicken Sie auf die Registerkarte URL signing secret.

Zum Anfordern eines neuen geheimen URL-Signaturschlüssels wählen Sie Regenerate secret aus. Die Gültigkeit des vorherigen geheimen Schlüssels läuft 24 Stunden nach Generierung eines neuen ab. Nach Ablauf von 24 Stunden funktionieren Anforderungen mit dem alten geheimen Schlüssel nicht mehr.

Eine digitale Signatur für API-Schlüssel generieren

Um eine digitale Signatur für Ihre Anforderung zu erstellen, führen Sie die folgenden Schritte durch.

Authentifizierung für Google Maps APIs Premium Plan-Kunden

Die Informationen in diesem Abschnitt gelten nur für den neuen Google Maps APIs Premium Plan, der seit dem 6. Januar 2016 erhältlich ist.



Besitzen Sie eine frühere Maps APIs for Work- oder Maps API for Business-Lizenz? Lesen Sie unseren Leitfaden zuMaps APIs for Work-Lizenzen. So bestimmen Sie, ob Sie eine frühere Lizenz besitzen: Klicken Sie im Google Cloud Support Portal auf der linken Seite auf Maps: Usage Report. Wenn die ID oben im Bericht das folgende Format aufweist, nutzen Sie den neuen Premium Plan:
gme-[company] & proj-[number] ([type])
Anderenfalls besitzen Sie eine frühere Lizenz.

Bei Verwendung der Google Street View Image API mit einer Google Maps APIs Premium Plan-Lizenz müssen Sie Ihre Anwendung entweder mit einem API-Schlüssel oder mit Ihrer Client-ID authentifizieren. Außerdem ist eine digitale Signatur erforderlich. Hinweis: Wenn Sie bereits über eine frühere Maps API for Business-Lizenz verfügen, müssen Sie eine Client-ID verwenden. Ein API-Schlüssel kann in diesem Fall nicht verwendet werden.

Bei Ihren Überlegungen dazu, welche Authentifizierungsmethode Sie verwenden wollen, beachten Sie bitte Folgendes:

  • API-Schlüssel (erhältlich für Google Maps APIs Premium Plan-Kunden, aber nicht für Inhaber einer früheren Maps API for Business-Lizenz) – Bei Verwendung eines API-Schlüssels für die Authentifizierung von Anforderungen können Sie:
  • Client-ID – Bei Verwendung Ihrer Client-ID (anstatt eines API-Schlüssels) zur Authentifizierung von Anforderungen können Sie:
    • den Parameter channel zu Anforderungen hinzufügen, damit Sie detailliertere Nutzungsberichte ansehen können
    • Nutzungsberichte mit Daten für mehr als 30 Tage im Google Cloud Support Portal ansehen
    • Maps Analytics-Tools für die Maps JavaScript API verwenden

Lesen Sie weitere Informationen zu Berichten, die für Premium Plan-Kunden verfügbar sind.

Verwenden eines API-Schlüssels und einer Signatur

Zur Authentifizierung der Street View API mithilfe eines API-Schlüssels werden zwei Authentifizierungsparameter benötigt: ein API-Schlüssel und eine eindeutige digitale Signatur.

Um einen API-Schlüssel anzufordern, klicken Sie unten auf Schaltfläche. Sie werden nun durch den Vorgang geleitet.

Wichtig: Achten Sie darauf, im Drop-down-Menü „Project“ das Projekt auszuwählen, das beim Kauf vom Premium Plan für Sie angelegt wurde. Der Projektname beginnt mit Google Maps APIs for Business or Google Maps for Work or Google Maps.*

Schlüssel anfordern

Alternativ können Sie auch wie folgt einen API-Schlüssel anfordern:

  1. Navigieren Sie zu Google API Console.
  2. Wählen Sie im Drop-down-Menü des Projekts das Projekt Google Maps Premium aus.*
  3. Klicken Sie auf Continue.
  4. Fordern Sie auf der Seite Credentials einen API-Schlüssel an (und legen Sie die Einschränkungen für den API-Schlüssel fest).
    Hinweis: Wenn Sie bereits über einen Schlüssel ohne Einschränkungen oder einen Schlüssel mit Browsereinschränkungen verfügen, können Sie diesen Schlüssel verwenden.
  5. Um Kontingentdiebstahl zu verhindern, schützen Sie Ihren API-Schlüssel anhand der bewährten Methoden.

* Hinweis: Achten Sie darauf, im Drop-down-Menü des Projekts das Projekt auszuwählen, das beim Kauf von Premium Plan für Sie angelegt wurde. Der Projektname beginnt mit Google Maps APIs for Business or Google Maps for Work or Google Maps. Wichtig: Wenn Sie bereits über eine frühere Maps API for Business-Lizenz verfügen, müssen Sie eine Client-ID verwenden. Ein API-Schlüssel kann in diesem Fall nicht verwendet werden.


Sie können auch nach einem vorhandenen Schlüssel in Google API Console suchen.

Weitere Informationen zur Verwendung der Google API Console finden Sie in der Hilfe zur API Console.

Digitale Signaturen bei Verwendung eines API-Schlüssels mit dem Premium Plan

Anforderungen an die Google Street View Image API unter Verwendung eines key-Parameters müssen auch einen signature-Parameter einschließen, der eine digitale Signatur enthält, die Sie mit einen gemeinsamen geheimen URL-Signaturschlüssel generieren müssen. Ihr gemeinsamer geheimer Schlüssel ist in Google API Console verfügbar.

Der Signaturvorgang verwendet einen Verschlüsselungsalgorithmus, um die URL und Ihren gemeinsamen geheimen Schlüssel zu kombinieren. Anhand der sich ergebenden eindeutigen Signatur können unsere Server prüfen, ob Anforderungen zur Websitegenerierung unter Verwendung Ihres API-Schlüssels dazu auch autorisiert sind.

Das Erstellen einer digitalen Signatur ist ein Vorgang, der aus zwei Schritten besteht:

  1. Ihren geheimen URL-Signaturschlüssel von der Google API Console anfordern
  2. Unter Verwendung Ihres geheimen URL-Signaturschlüssels eine digitale Signatur generieren

Ihren geheimen URL-Signaturschlüssel anfordern (für Premium Plan-Kunden, die einen API-Schlüssel verwenden)

Ihr kryptografischer geheimer URL-Schlüssel ist in Google API Console verfügbar. Der geheime Schlüssel, auch privater Schlüssel genannt, wird mit einem modifizierten Base64-Verfahren für URLs codiert. Dieser geheime Schlüssel wird zwischen Ihnen und Google geteilt und ist für Ihren API-Schlüssel eindeutig. Bitte schützen Sie Ihren geheimen URL-Signaturschlüssel. Geben Sie ihn nicht aufgrund von Anforderungen weiter, speichern Sie ihn nicht auf Websites oder posten Sie ihn nicht in öffentlichen Foren. Jede Person, die diesen geheimen URL-Signaturschlüssel erlangt, kann Anforderungen unter Verwendung Ihrer Identität manipulieren.

Klicken Sie auf diesen Link, um direkt zur API Console-Seite zu navigieren, die Ihren geheimen URL-Signaturschlüssel enthält. Wichtig: Achten Sie darauf, im Drop-down-Menü „Project“ das Projekt auszuwählen, das beim Kauf des Premium Plans für Sie angelegt wurde.*

Alternativ können Sie auch wie folgt Ihren geheimen URL-Signaturschlüssel anzeigen:

  1. Navigieren Sie zu Google API Console.
  2. Wählen Sie im Drop-down-Menü des Projekts das Projekt Google Maps Premium aus.*
  3. Klicken Sie in der Liste der APIs auf der Dashboard-Seite auf den Namen der Google Street View Image API. Es werden die API-Details angezeigt, während der Tab Overview geöffnet ist.
  4. Klicken Sie auf die Registerkarte URL signing secret.

Zum Anfordern eines neuen geheimen URL-Signaturschlüssels klicken Sie auf Regenerate secret. Die Gültigkeit des vorherigen geheimen Schlüssels läuft 24 Stunden nach Generierung eines neuen ab. Nach Ablauf von 24 Stunden funktionieren Anforderungen mit dem alten geheimen Schlüssel nicht mehr.

* Hinweis: Achten Sie darauf, im Drop-down-Menü des Projekts das Projekt auszuwählen, das beim Kauf von Premium Plan für Sie angelegt wurde. Der Projektname beginnt mit Google Maps APIs for Business or Google Maps for Work or Google Maps. Wichtig: Wenn Sie bereits über eine frühere Maps API for Business-Lizenz verfügen, müssen Sie eine Client-ID verwenden. Ein API-Schlüssel kann in diesem Fall nicht verwendet werden.

Eine digitale Signatur für API-Schlüssel generieren

Um eine digitale Signatur für Ihre Anforderung zu erstellen, führen Sie die folgenden Schritte durch.


Verwenden einer Client-ID und einer Signatur

Um die Street View API mit einer Client-ID (anstatt des API-Schlüssels) zu authentifizieren, werden zwei Authentifizierungsparameter benötigt: eine Client-ID und eine eindeutige digitale Signatur. Außerdem wird für die Autorisierung die URL-Registrierung benötigt.

Falls Sie zuvor für die Authentifizierung einen API-Schlüssel verwendet haben und nun eine Client-ID verwenden wollen, müssen Sie den key-Parameter entfernen, bevor Sie die API laden. Wenn sowohl eine Client-ID als auch ein API-Schlüssel eingeschlossen werden, führt dies dazu, dass das Laden der API fehlschlägt..

Ihre Client-ID und Signatur

Nachdem Sie eine Google Maps APIs Premium Plan-Lizenz erworben haben, erhalten Sie eine Begrüßungs-E-Mail von Google. Diese E-Mail enthält Ihre Client-ID und Ihren privaten kryptografischen Schlüssel.

  • Mit Ihrer Client-ID erhalten Sie Zugriff auf die Sonderfunktionen vom Google Maps APIs Premium Plan. Alle Client-IDs beginnen mit dem Präfix gme-. Übergeben Sie Ihre Client-ID als Wert des Parameters client.

    Ihre Client-ID funktioniert nur von URLs aus, die Sie autorisiert haben. Sie brauchen sich also keine Gedanken um die Geheimhaltung zu machen.

  • Mit Ihrem privaten kryptografischen Schlüssel wird eine eindeutige digitale Signatur generiert. Übergeben Sie diese Signatur als Wert des Parameters signature. Weitere Informationen zum Generieren einer Signatur finden Sie weiter unten im Abschnitt über digitale Signaturen.

    <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">

Wenn Sie Ihre Client-ID oder Ihren privaten kryptografischen Schlüssel verloren haben, können Sie diese erneut anfordern, indem Sie sich im Google Cloud Support Portal anmelden und in den Links im linken Bereich der Seite auf Maps: Manage Client ID klicken.

Optionaler Parameter für Berichte

Bei Verwendung einer Client-ID zur API-Authentifizierung kann der folgende optionale Parameter verwendet werden:

  • channel wird zur Bereitstellung zusätzlicher Berichtsdetails verwendet, indem verschiedene Kanäle in Ihren Berichten getrennt voneinander gruppiert werden. Weitere Informationen finden Sie in der Übersicht über Premium Plan-Berichte.

Digitale Signaturen, für Premium Plan-Kunden, die eine Client-ID verwenden

Anforderungen an die Street View API unter Verwendung des client-Parameters erfordern ebenfalls eine digitale signature, die mit dem privaten kryptografischen Schlüssel generiert wird, den Sie in Ihrer Begrüßungs-E-Mail erhalten haben.

Der Signaturvorgang kombiniert unter Verwendung eines Verschlüsselungsalgorithmus eine URL mit dem Schlüssel. Anhand der daraus resultierenden eindeutigen Signatur können unsere Server prüfen, ob eine Website, die mittels Ihrer Client-ID Anforderungen generiert, dazu auch autorisiert ist. Die Signatur ist außerdem eindeutig für die URL. Dadurch wird sichergestellt, dass Anforderungen, die Ihre Client-ID verwenden, nicht modifiziert werden können, ohne dass eine neue Signatur generiert werden muss.

Ihr privater kryptografischer Schlüssel

Ihr privater kryptografischer URL-Signaturschlüssel wird zusammen mit Ihrer Client-ID ausgegeben. Er handelt sich um einen „gemeinsamen geheimen Schlüssel“, den Sie mit Google teilen. Dieser Signaturschlüssel gehört nur Ihnen und ist Ihrer Client-ID eindeutig zugeordnet. Gewährleisten Sie daher die Sicherheit Ihres Signaturschlüssels. Dieser Schlüssel darf nicht in Anforderungen weitergegeben, auf Websites gespeichert oder in öffentlichen Foren gepostet werden. Jeder, der in den Besitz dieses Signaturschlüssels gelangt, kann unter Verwendung Ihrer Identität Anforderungen manipulieren.

Hinweis: Dieser private kryptografische Signaturschlüssel ist nicht identisch mit den durch die Google API Console ausgegebenen API-Schlüsseln.

Sollten Sie Ihren privaten kryptografischen Schlüssel verloren haben, melden Sie sich im Google Cloud Support Portal an und klicken Sie auf Maps: Manage Client ID, um ihn wieder abzurufen.

Eine digitale Signatur für Client-IDs generieren

Um eine digitale Signatur für Ihre Anforderung zu erstellen, führen Sie die folgenden Schritte durch.

Digitale Signatur generieren

Eine digitale Signatur für API-Schlüssel generieren

Führen Sie die folgenden Schritte zur Generierung einer digitalen Signatur für Ihre Anforderung durch (zur Verwendung in Verbindung mit einem API-Schlüssel) Diese Anleitung gilt für die Verwendung der Standard-API ebenso wie für Premium Plan-Kunden, die die Authentifizierung mit einem API-Schlüssel vornehmen:

  1. Wenn Sie die Anforderung-URL ohne Signatur erstellen, muss Ihr API-Schlüssel unbedingt im Schlüssel-Parameter eingebunden sein. Beachten Sie, dass Sie für Nichtstandardzeichen eine URL-Codierung durchführen müssen. Beispiel:

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

    Hinweis: Alle Google-Dienste erfordern eine UTF-8-Zeichencodierung (die implizit ASCII mit einschließt). Falls Ihre Anwendungen mit anderen Zeichencodierungen betrieben werden, stellen Sie sicher, dass von diesen Anwendungen URLs mit UTF-8-Codierung erstellt werden und eine ordnungsgemäße URL-Codierung durchgeführt wird.

  2. Entfernen Sie den Domänenteil der Anforderung, sodass nur Pfad und Anforderung übrigbleiben:

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

  3. Rufen Sie Ihren geheimen URL-Signaturschlüssel ab, der mit einem modifizierten Base64-Verfahren für URLs codiert ist, und signieren Sie die obige URL mithilfe des HMAC-SHA1-Algorithmus.

    Möglicherweise müssen Sie Ihren geheimen Schlüssel in das ursprüngliche Binärformat decodieren. Beachten Sie, dass die sich ergebende Signatur in den meisten kryptografischen Bibliotheken im Binärformat vorliegt.

  4. Hinweis: Über das modifiziertes Base64-Verfahren für URLs werden die Zeichen + und / des Standard-Base64-Verfahrens durch - bzw. _ ersetzt, sodass bei diesen Base64-Signaturen keine URL-Codierung mehr durchgeführt werden muss.

  5. Codieren Sie die sich ergebende binäre Signatur mit dem modifizierten Base64-Verfahren für URLs, um diese Signatur in ein Format zu konvertieren, das innerhalb einer URL weitergeleitet werden kann.

  6. Fügen Sie die sich ergebende Signatur zur Anforderungs-URL innerhalb eines signature-Parameters hinzu. Beispiel:

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

Beispiele für Möglichkeiten zur Implementierung der URL-Signatur von serverseitigem Code finden Sie im Codebeispiel für URL-Signaturen.

Um jetzt eine URL zu signieren, geben Sie nachfolgend Ihre URL und Ihren geheimen URL-Schlüssel ein. Die URL muss das oben in Schritt 1 beschriebene Format haben und muss URL-codiert sein.


Eine digitale Signatur für Client-IDs generieren

Versuche, mit einer ungültigen Signatur auf die Street View API zuzugreifen, führen zum Fehler HTTP 403 (Forbidden). Wenn Sie Ihre Anwendungen auf die Verwendung der URL-Signatur umstellen, führen Sie unbedingt einen Test Ihrer Signaturen durch, um sicherzustellen, dass sie gültige Anforderungen auslösen. Zuerst sollten Sie testen, ob die ursprüngliche URL gültig ist und ob Sie die richtigen Signaturen generieren.

Befolgen Sie die folgenden Schritte, um eine digitale Signatur für Ihre Anforderung zu erstellen:

  1. Erstellen Sie die Anforderungs-URL ohne Signatur und achten Sie dabei darauf, Ihren Parameter client einzubinden. Beachten Sie, dass alle nicht standardmäßigen Zeichen URL-codiert sein müssen:

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

    Hinweis: Alle Google-Dienste erfordern eine UTF-8-Zeichencodierung (die implizit ASCII mit einschließt). Falls Ihre Anwendungen mit anderen Zeichencodierungen betrieben werden, stellen Sie sicher, dass von diesen Anwendungen URLs mit UTF-8-Codierung erstellt werden und eine ordnungsgemäße URL-Codierung durchgeführt wird.

  2. Entfernen Sie den Domänenteil der Anforderung, sodass nur Pfad und Anforderung übrigbleiben:

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

  3. Rufen Sie Ihren privaten Schlüssel ab, der mit einem modifizierten Base64-Verfahren für URLs codiert ist, und signieren Sie die obige URL mithilfe des HMAC-SHA1-Algorithmus. Möglicherweise müssen Sie diesen Schlüssel in sein ursprüngliches Binärformat decodieren. Beachten Sie, dass die daraus resultierende Signatur in den meisten kryptografischen Bibliotheken im Binärformat vorliegt.

    Hinweis: Über das modifiziertes Base64-Verfahren für URLs werden die Zeichen + und / des Standard-Base64-Verfahrens durch - bzw. _ ersetzt, sodass bei diesen Base64-Signaturen keine URL-Codierung mehr durchgeführt werden muss.

  4. Codieren Sie die sich ergebende binäre Signatur mit dem modifizierten Base64-Verfahren für URLs, um diese Signatur in ein Format zu konvertieren, das innerhalb einer URL weitergeleitet werden kann.

  5. Fügen Sie diese Signatur der URL innerhalb eines Parameters signature hinzu:

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

Beispiele für Möglichkeiten zur Implementierung der URL-Signatur von serverseitigem Code finden Sie im Codebeispiel für URL-Signaturen.

Um jetzt eine URL zu signieren, geben Sie nachfolgend Ihre URL und Ihren geheimen URL-Schlüssel ein. Die URL muss das oben in Schritt 1 beschriebene Format haben und muss URL-codiert sein.

Codebeispiel für URL-Signaturen



In den folgenden Abschnitten werden Ihnen Methoden aufgezeigt, wie Sie URL-Signaturen mit serverseitigem Code implementieren. URLs müssen immer serverseitig signiert werden, damit Ihr Kryptografieschlüssel nicht anderen Benutzern angezeigt wird.

Python

Das Beispiel unten verwendet Standard-Python-Bibliotheken zur Signatur von URLs. (Download Code.)

#!/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

Im Beispiel unten wird die Klasse java.util.Base64 verwendet, die seit JDK 1.8 verfügbar ist. Ältere Versionen müssen ggf. Apache Commons o. Ä. verwenden. (Download Code.)

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#

Das Beispiel unten verwendet die standardmäßige Bibliothek System.Security.Cryptography zur Signatur einer URL-Anforderung. Beachten Sie, dass die Standard-Base64-Codierung konvertiert werden muss, um eine URL-sichere Version implementieren zu können. (Download Code.)

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));
    }
  }
}

Behandlung von Authentifizierungsproblemen

Falls Ihre Anforderung falsch formatiert ist oder eine ungültige Signatur enthält, wird von Google Street View Image API der Fehler HTTP 403 (Forbidden) zurückgegeben.

Für die Problembehandlung von einzelnen URLs können Sie den URL-Signaturdebugger verwenden. Damit können Sie eine von Ihrer Anwendung generierte URL und Signatur schnell überprüfen.

Alternativ hierzu können Google Maps APIs Premium Plan-Kunden sich zur Fehlerbehebung einzelner URLs beim Google Cloud Support Portal anmelden und Resources > Google Maps APIs Premium Plan online tools > URL Signing Debugger for Web Service and Image APIs auswählen.

Feedback geben zu...

Google Street View Image API