【问题标题】:Geocoding API key should be server-restricted地理编码 API 密钥应受服务器限制
【发布时间】:2018-05-02 21:31:26
【问题描述】:

page 的注释中,提到地理编码 API 密钥应受服务器限制

在开发和测试过程中,您可以注册一个项目进行测试 Google API 控制台中的用途并使用通用的、不受限制的 API 钥匙。当您准备好将您的应用程序或网站投入生产时, 为生产注册一个单独的项目,创建一个服务器限制 API 密钥,并将密钥添加到您的应用程序中。

地理编码 API 是否仅用于服务器类型实例?

我可以通过使用 android/ios 的限制将 Geocoding API 密钥捆绑在应用程序中来将其放在移动设备上吗?我担心我会违反上述“服务器限制 API 密钥”条款。

PS。我知道 Google API 密钥可以限制为 android/ios/ip 等。

【问题讨论】:

  • 我不知道为什么我被否决了,我还更新了问题并添加了有关“服务器限制的 API 密钥”子句的问题的更多详细信息
  • 所以您更愿意使用 Google 的 Geolocation Web Service 而不是移动设备自带的原生 API?
  • @Iavor 嗨,有什么样的原生 API?实际上,我更愿意将我的地理定位 API 密钥直接捆绑到生产应用程序中,但我担心这违反了 thr 条款“服务器限制的 API 密钥”。这样,移动应用程序将使用 fetch/axios 直接请求“maps.googleapis.com/maps/api/geocode/…”。我正在使用本机反应
  • Geolocation in React Native 上有文档。看看它,看看它是否有你要找的东西。您在评论中发布的链接称为Geocoding API,与Geolocation API 不同。您希望在您的应用中使用这两种服务中的哪一种?
  • @lavor 感谢您指出这一点。我想要使​​用的是地理编码(查找地址的坐标)。如果地理定位和地理编码文档在“获取 api 密钥”部分看起来几乎相同,则令人困惑。我还进一步查看了官方google-maps-services-js。它不容易在 react-native 应用程序上使用。我必须破解我的方式或使用服务器 API,以便我们可以“限制”生产密钥

标签: google-maps react-native


【解决方案1】:

为了从移动设备发出 Google Maps Web Service 请求(不使用 Google Maps SDK),您必须使用不受限制的密钥。每台移动设备都有自己的 IP 地址,无法对所有使用您应用的移动设备设置 IP 地址限制。

Android 或 iOS API 密钥应用程序限制仅适用于通过 Android 或 iOS SDK 发出的请求。

如果您想对来自移动设备的 Web 服务请求使用受限密钥,则必须使用代表移动应用发出请求的代理服务器。

【讨论】:

  • 这也是我在检查 API 限制规则列表并通过 fetch/axios 在 react-native js 端 http 请求上尝试每个规则后得出的结论
  • @lavor,您尝试过高级计划吗?正如page 所述 - 高级计划有额外的限制类型 --- use a client ID and digital signature。我现在使用的是标准版,但如有必要,我计划升级到高级版,以成本较低者为准。谷歌映射使用服务器受限 API 密钥的高级计划或 AWS lambda
  • 我还没有尝试过高级计划。是的,作为高级计划客户,您可以使用 API 密钥或客户端 ID 和数字签名来验证您的请求。
【解决方案2】:

我一直在阅读文档,但地理编码 Web 服务 API 似乎不适合我的用例。我可以使用“Javascript Google Maps API”。

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多