一切就绪!

着手开发前,请先阅读我们的开发者文档

激活 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,则您有两种进行身份验证的选择:
    • 在 Google Maps APIs Premium Plan 项目(您购买 Premium Plan 时,系统为您创建)下,使用 Google API Console 中设置的 API 密钥以及数字签名
        或者
    • 不使用 API 密钥,而是添加客户端 ID 和数字签名

    请查看下面的 Google Maps APIs Premium Plan 部分,了解有关选择最佳身份验证方法的信息。

标准 API 的身份验证 - API 密钥和数字签名

通过在请求中加入密钥,您可以在 Google API Console 中监控您的应用的 API 使用情况,能够获取大量的每日免费配额,并确保 Google 可以在必要时就应用的相关事宜与您联系。

  • 对于标准 API,建议的身份验证方法是在向 Google Street View Image API 发出的所有请求中都加入 API 密钥数字签名。API 密钥是必填项。如果您启用了按需付费,则数字签名也是必填项。我们的服务器可以通过唯一签名来验证,任何使用您的 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 上提供了您的共享密钥。

注:如果您启用了按需付费,则数字签名是必填项。如果超过地图加载的每日免费限额 25,000 次,当天剩余时间内的额外地图加载将被收取费用。不包含数字签名的可收费地图加载将会失败。如果您使用标准 API 而未启用按需付费,我们建议您添加数字签名(并非强制)。

签名进程使用一种加密算法将 URL 与您的共享密钥合并。我们的服务器可以通过生成的唯一签名来验证,任何使用您的 API 密钥生成请求的网站都获得了相应授权。

获取您的 URL 签名密钥

Google API Console 上提供了您的加密 URL 签名密钥。该密钥也称为私钥,是以改良版 URL Base64 编码。该密钥在您与 Google 之间共享,是您 API 密钥的独有密钥。请确保 URL 签名密钥的安全。切勿向其传递任何请求,将其存储在任何网站上,或将其发布到任何公共论坛。任何获得该 URL 签名密钥的人都能利用您的身份发出欺诈性请求。

您可以点击此链接直接跳转到包含您的 URL 签名密钥的 API Console 页面。重要说明:在项目下拉菜单中,请务必选择您为 Google Street View Image API 创建 API 密钥时使用的同一项目。

此外,也可执行以下步骤来查看您的 URL 签名密钥:

  1. 转至 Google API Console
  2. 在项目下拉菜单中,选择您为 Google Street View Image API 创建 API 密钥时使用的同一项目。
  3. 从 Dashboard 页面的 API 列表中,点击 Google Street View Image API 的名称。系统随即会显示 API 详细信息,并打开 Overview 标签。
  4. 点击 URL signing secret 选项卡。

要获取新的网址签名密钥,请选择 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 许可,则您必须使用客户端 ID,而不是 API 密钥。

当决定要使用哪一种身份验证方法时,请考虑以下因素:

  • API 密钥(Google Maps APIs Premium Plan 客户可使用,但持有旧 Maps API for Business 许可的客户不可使用)- 通过使用 API 密钥来对请求进行身份验证,您可以:
  • 客户端 ID - 通过使用您的客户端 ID(而不是 API 密钥)来对请求进行身份验证,您可以:
    • 向请求添加 channel 参数,从而可以查看更详细的消耗报告
    • Google Cloud Support Portal 中查看使用情况报告(包含 30 天以上的数据使用情况)
    • 为 Maps JavaScript API 使用地图分析工具

获取有关 Premium Plan 客户可以使用的报告的详细信息。

使用 API 密钥和签名

要使用 API 密钥对 Street View API 进行身份验证,需要两个身份验证参数:API 密钥和唯一的数字签名

要获取 API 密钥,请点击下面的按钮。系统将指导您完成此流程。

重要说明:在项目下拉菜单中,请务必选择在您购买 Premium Plan 时,系统为您创建的项目。项目名称以 Google Maps APIs for Business 或 Google Maps for Work 或 Google Maps 开头。*

获取密钥

或者,请按照下列步骤获取 API 密钥:

  1. 转至 Google API Console
  2. 从项目下拉菜单中,选择 Google Maps Premium 项目。*
  3. 点击 Continue
  4. Credentials 页面上,获取 API 密钥(并设置 API 密钥限制)。
    注:如果已有不受限的密钥或有浏览器限制的密钥,可以使用该密钥。
  5. 为了防止配额盗用,请遵循这些最佳做法保护您的 API 密钥

* 注:在项目下拉菜单中,您必须选择当您购买 Premium Plan 时为您创建的项目。项目名称以 Google Maps APIs for Business 或 Google Maps for Work 或 Google Maps 开头。重要说明:如果您拥有旧 Maps API for Business 许可,则您必须使用客户端 ID,而不是 API 密钥。


您也可以在 Google API Console 中查找现有密钥

如需了解有关使用 Google API Console 的详细信息,请参阅 API Console 帮助

数字签名(通过 Premium Plan 使用 API 密钥时)

使用 key 参数向 Google Street View Image API 发出的请求应包括 signature 参数,其中包含您必须使用共享网址签名密钥生成的数字签名。Google API Console 上提供了您的共享密钥。

签名进程使用一种加密算法将 URL 与您的共享密钥合并。我们的服务器可以通过生成的唯一签名来验证,任何使用您的 API 密钥生成请求的网站都获得了相应授权。

创建数字签名是一个两步式流程:

  1. 从 Google API Console 获取您的网址签名密钥
  2. 使用您的网址签名密钥生成数字签名

获取您的网址签名密钥(适用于使用 API 密钥的 Premium Plan 客户)

Google API Console 上提供了您的加密 URL 签名密钥。该密钥也称为私钥,是以改良版 URL Base64 编码。该密钥在您与 Google 之间共享,是您 API 密钥的独有密钥。请确保 URL 签名密钥的安全。切勿向其传递任何请求,将其存储在任何网站上,或将其发布到任何公共论坛。任何获得该 URL 签名密钥的人都能利用您的身份发出欺诈性请求。

您可以点击此链接直接跳转到包含您的 URL 签名密钥的 API Console 页面。重要说明:在项目下拉菜单中,请务必选择在您购买高级计划时,系统为您创建的项目。*

此外,也可执行以下步骤来查看您的 URL 签名密钥:

  1. 转至 Google API Console
  2. 从项目下拉菜单中,选择 Google Maps Premium 项目。*
  3. 从 Dashboard 页面的 API 列表中,点击 Google Street View Image API 的名称。系统随即会显示 API 详细信息,并打开 Overview 标签。
  4. 点击 URL signing secret 选项卡。

如需获取新的 URL 签名密钥,请点击 Regenerate secret。旧密钥将在您生成新密钥后 24 小时失效。24 小时过后,包含旧密钥的请求将不再有效。

* 注:在项目下拉菜单中,您必须选择当您购买 Premium Plan 时为您创建的项目。项目名称以 Google Maps APIs for Business 或 Google Maps for Work 或 Google Maps 开头。重要说明:如果您拥有旧 Maps API for Business 许可,则您必须使用客户端 ID,而不是 API 密钥。

生成数字签名,供与 API 密钥搭配使用

要为您的请求创建数字签名,请按照下述步骤操作


使用客户端 ID 和签名

要使用客户端 ID(而不是 API 密钥)对 Street View API 进行身份验证,需要两个身份验证参数:客户端 ID 和唯一的数字签名。此外,必须完成网址注册才能获得授权。

如果您之前使用 API 密钥进行身份验证并转而使用客户端 ID,则您必须在加载 API 之前移除 key 参数。如果同时包含客户端 ID 和 API 密钥,API 将无法加载

您的客户端 ID 和签名

购买 Google Maps APIs Premium Plan 许可后,您将收到 Google 发送的一封欢迎电子邮件,其中包含您的客户端 ID私有加密密钥

  • 您的客户端 ID 用于访问 Google Maps APIs Premium Plan 的特殊功能。所有客户端 ID 都以 gme- 前缀开头。以 client 参数值的形式传递客户端 ID。

    您的客户端 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 身份验证时,可使用以下可选参数:

  • channel 能够在报告中为不同的渠道单独分组,从而为报告提供更多详细信息。如需了解详细信息,请参阅高级计划报告概览

数字签名,适用于使用客户端 ID 的 Premium Plan 客户

使用 client 参数向 Street View API 发出的请求也需要数字签名,此签名使用在欢迎电子邮件中向您提供的私有加密密钥生成。

签署流程使用一种加密算法将网址与密钥结合起来。我们的服务器可以通过生成的唯一签名来验证,任何使用您的客户端 ID 生成请求的网站都获得了相应授权。签名在每个网址下也是唯一的,从而确保在不生成新签名的情况下将无法修改使用您的客户端 ID 的请求。

您的私有加密密钥

您的私有加密网址签名密钥将随您的客户端 ID 一起发放,是您与 Google 之间的“密码共享密钥”。此签名密钥仅属于您,并且对您的客户端 ID 来说是唯一的。因此,请妥善保存您的签名密钥。此密钥不应在任何请求内传递、存储在任何网站上或发布到任何公共论坛中。获取此签名密钥的任何人都能利用您的身份发出欺诈性请求。

:此私有加密签名密钥与 Google API Console 发放的 API 密钥相同。

如果您丢失了自己的私有加密密钥,请登录 Google Cloud Support Portal 并点击 Maps:Manage Client ID,检索该密钥。

生成数字签名,供与客户端 ID 搭配使用

要为您的请求创建数字签名,请按照下述步骤操作

生成数字签名

生成数字签名,供与 API 密钥搭配使用

请按照以下步骤为您的请求创建数字签名(与 API 密钥结合使用)。以下说明适用于使用标准 API 以及通过 API 密钥进行 Premium Plan 客户身份验证。

  1. 构建不带签名的请求 URL,务必在 key 参数中加入您的 API 密钥。请注意,您必须对任何非标准字符进行 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. 检索您的网址签名密钥(以改良版网址 Base64 形式进行编码),并使用 HMAC-SHA1 算法签署上面的网址。

    您可能需要将密钥解码成其原始二进制格式。请注意,在大多数加密库中,生成的签名均为二进制格式。

  4. 注:改良版 URL Base64 将标准版 Base64 的 + 字符和 / 字符分别替换成 -_,从而使这些 Base64 签名不再需要接受 URL 编码处理。

  5. 利用改良版 URL Base64 对生成的二进制签名进行编码,将该签名转换成可在 URL 内传递的内容。

  6. 通过 signature 参数向请求 URL 添加生成的签名。例如:

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

如需了解有关使用服务器端代码实现网址签名的示例,请参阅网址签名的示例代码

如需立即签署网址,请在下方输入您的网址和网址签名密钥。网址必须采用上面第 1 步中所述的格式,并进行网址编码。


生成数字签名,供与客户端 ID 搭配使用

尝试使用无效签名获取 Street View API 将导致 HTTP 403 (Forbidden) 错误。在您将应用转换为使用网址签名时,请务必测试您的签名,确保它们可以发起有效请求。您首先应测试原始网址是否有效,并测试您是否生成正确的签名。

按以下步骤为您的请求创建数字签名:

  1. 构建不带签名的请求网址,务必添加您的 client 参数。请注意,任何非标准字符都需要进行网址编码

    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. 检索您的私钥(以改良版网址 Base64 形式进行编码),并使用 HMAC-SHA1 算法签署上面的网址。您可能需要将此密钥解码成其原始二进制格式。请注意,在大多数加密内容库中,生成的签名均为二进制格式。

    注:改良版 URL Base64 将标准版 Base64 的 + 字符和 / 字符分别替换成 -_,从而使这些 Base64 签名不再需要接受 URL 编码处理。

  4. 利用改良版 URL Base64 对生成的二进制签名进行编码,将该签名转换成可在 URL 内传递的内容。

  5. 将此签名附加到 signature 参数内的网址:

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

如需了解有关使用服务器端代码实现网址签名的示例,请参阅网址签名的示例代码

如需立即签署网址,请在下方输入您的网址和网址签名密钥。网址必须采用上面第 1 步中所述的格式,并进行网址编码。

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 请求。请注意,我们需要转换默认 Base64 编码,才能实现 URL 安全版本。(下载该代码。)

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 签名调试器。您可以利用它快速验证由您的应用生成的 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,对各个网址进行问题排查。

发送以下问题的反馈:

此网页
Google Street View Image API
需要帮助?请访问我们的支持页面