【问题标题】:Google Geocode API KEY Restriction for Mobile Applications移动应用程序的 Google Geocode API KEY 限制
【发布时间】:2019-07-01 16:20:02
【问题描述】:

我的 android 和 iOS 应用程序使用相同的无限制(平台和服务)api 密钥进行地理编码距离矩阵位置服务。我想为单独的服务和平台使用单独的受限密钥。在谷歌云控制台中,如何限制不同平台的密钥?我应该使用和 android 提供包名称和 sha1 以及带有捆绑 ID 的 iOS,还是应该使用我的服务器的 IP 地址?最佳做法应该是什么?我正在使用改造来打这些 api。

有时键会以this IP, site or mobile application is not authorized to use this API key. Request received from IP address 202.65.11.56, with empty referer 响应,然后又会以正确的响应响应。为什么会出现这种异常?

我还在使用地点自动完成 sdk 搜索地点,并且为了获取几何,我正在使用 place_id 调用地理编码,我是否应该为此在地理编码 api 密钥中授予地点 api 权限?

【问题讨论】:

  • @xomena 我已阅读并了解我需要从 android 或 iOS 更改对服务器 IP 的限制。现在我的问题是在这种情况下如何使用服务器 ip 受限 api 密钥直接调用地理编码或方向 api?如果我想使用受限密钥,是否需要从我的服务器调用并从服务器检索响应?因为直接来自 android 的 ip 并不总是相同的。如果我从我的服务器调用,性能会根据我的服务器性能而有所不同,对吗?
  • stackoverflow.com/a/46185362/5339146 也检查了这个答案并关心性能
  • 是的,如果您想限制 API 密钥,Google 建议使用中间服务器。

标签: android ios google-maps google-geocoding-api


【解决方案1】:

对于您正在使用的所有 Google Api 用法,您可以使用单个 ApiKey 并对其进行限制。根据您的平台限制它并在各自的平台中使用此密钥。既然您提到您将在移动应用程序(Android 和 iOS)中使用,以下是步骤。

转到Google Cloud Console

创建项目 > 转到 API 和服务 > 凭据 > 创建凭据

然后像这样限制密钥 -

  1. 对于 Android,请在此处添加您的包名称和 SHA-1 证书

  1. 对于 iOS,请在此处添加您的 Bundle Id

现在在 android & iOS 平台使用 APIKey。这是限制您的 Google API 密钥的最佳方式。

希望对你有帮助!

【讨论】:

  • 当我使用 android 调用 rest api 并且地理编码没有 sdk 时,谷歌如何理解我是从 android 或 iOS 或邮递员调用的?只是出于好奇问这个。甚至在给出 ios bundle id 之后,它也无法正常工作,这可能是什么问题?我是否需要在地理编码中访问位置 api 才能从位置自动完成的位置 ID 中获取位置几何? @扎卡里。
  • 在使用包名和 sha1 限制 android 平台时,我仍然在地理编码和方向上得到 This IP, site or mobile application is not authorized to use this API key. Request received from IP address 202.65.11.56, with empty referer
  • 检查问题
  • 发现在您的情况下,您需要使用服务器密钥。限制将无济于事。不受 Android 或 iOS 限制之一。请尝试。
【解决方案2】:

您最有可能使用带有您的 API 密钥的 Web 服务,该密钥仅限于 Android/iOS 应用程序。

由于移动应用的限制,它只能用于 Maps Android/iOS SDK,不能用于任何网络服务或 JavaScript API。

我建议做的是确定哪个网络服务给出了这个错误(可能是地理编码 API,请仔细检查),并创建一个单独的具有 IP 地址限制的 API 密钥(不是 Android/iOS 应用程序),以便它可以用于网络服务。

【讨论】:

  • 你能解释一下我应该如何调用 api 吗?直接从android使用改造?如果是,谷歌如何理解我的服务器 IP?还是我需要从我的服务器打电话?就像我会打电话给我的后端,我的后端服务器会打电话给谷歌并给我回复?安全使用地理编码受限 API 密钥的最佳做法是什么?
  • 由于错误将您的公共服务器 IP 指向 202.65.11.56 那么这就是您应该在 IP 地址限制中授权的内容,但最好从您这边检查请求最终来自哪里.此外,Web 服务是 http 请求,因此任何能够发送 HTTP 请求的东西都可以。
  • 另外,这里是 API 密钥最佳实践文档:developers.google.com/maps/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多