【问题标题】:The provided API key is expired (for Directions API)提供的 API 密钥已过期(对于 Directions API)
【发布时间】:2020-07-08 04:09:46
【问题描述】:

我已经查看了我的问题的前 15 个“类似问题”,但没有一个能解决我的问题。有时,我为同一个 API 请求得到的错误是“This IP, site or mobile application is not authorized to use this API key. Request received from IP address {*ip_address*}, with empty referer”。我也对此进行了搜索,但建议的解决方案对我的情况都没有帮助。

我现在的情况

  • 我在 iOS 项目中调用 https://maps.googleapis.com/maps/api/directions/json?key=MYKEY&some_other_params
  • 我正在使用限制为捆绑 ID 的 API 密钥
  • 我有一个项目列表(我们将其称为位置项目),单击时我会调用 Direction API 以获取路线信息
  • 我遇到了上面提到的两个错误。这意味着有时我会收到过期错误,有时会收到 IP 错误。我收到相同位置项目的错误。

已启用 API:

  • 路线 API
  • 地理位置 API
  • iOS 版地图 SDK
  • 地理编码 API
  • 地点 API

Bundle ID 不是问题

我知道我的 Bundle ID 是正确的,因为我将它用于另一个服务,即 Firebase。为了消除错误输入的愚蠢错误,我从我的 Firebase API 凭据中复制了相同的 Bundle ID。我的 Firebase API 密钥仅限于相同的 Bundle ID 和 Firebase 服务。它工作没有任何问题。

仅限 API 限制

为了消除 Bundle ID 问题,我还为 应用程序限制尝试了 None 并选择限制 API。我一次添加了上面列出的 API,并调用了 Directions API。没有任何效果,既没有一个 API(Directions API),也没有所有这些。

Places API 的奇怪之处

我得到的一个奇怪行为是我创建了一个新的 API 密钥,并且它没有任何限制地工作。更奇怪的是我暂时禁用了 Places API。我这样做是因为我想“刷新”我的 API。我在另一个帖子中读到,通过禁用和重新启用 Places API 解决了 IP 问题。所以我关闭了它,但没有立即打开它。我使用了一个新的 API 密钥并单击我的位置项产生路由信息(我得到了想要的结果)。

其他限制(使用限制和计费)

我知道这也不是关于对 Directions API 进行过多尝试的限制。 The documentation 声明限制为每秒 50 个请求。此外,我使用 不受限制的 API 密钥 进行了“快速点击项目”,并且总是获得路线信息。我们的项目也启用了计费功能,所以这也不是问题。

卡在不受限制的密钥

现在我们使用的是不可接受的不受限制的密钥。我想知道,为什么使用不受限制的密钥可以完美地工作而限制它却不能。我确定我缺少配置,但我已经尝试了我能想到的所有可能的组合。

【问题讨论】:

    标签: ios api google-maps


    【解决方案1】:

    仅限于应用程序包 ID 的 API 密钥不适用于 Directions API 等后端网络服务请求。这些 API 密钥仅适用于从 Places SDK 和 Maps SDK for iOS 发出的请求。这就是您收到错误消息“此 IP、站点或移动应用程序无权使用此 API 密钥。从 IP 地址 {ip_address} 收到的请求,引用者为空”的原因。

    根据 Google Maps API key best practices,对于用于直接从移动应用程序发送的 Web 服务的 API 密钥,您可以执行以下一项或多项技术来保护您的 API 密钥:

    • 使用代理服务器。代理服务器为与相应的 Google Maps Platform API 交互提供了可靠的来源。然后使用 IP 限制来限制您的 API 密钥。
    • 混淆或加密 API 密钥或签名密钥。这会使直接从应用程序中抓取 API 密钥和其他私人数据变得复杂。
    • 使用 CA 固定或证书固定来验证服务器资源是否有效。 CA 固定检查服务器的证书是否由受信任的证书颁发机构颁发,并防止中间人攻击可能导致第三方发现您的 API 密钥。

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 2014-07-19
      • 2021-01-05
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2020-10-22
      • 2021-05-25
      • 2019-10-18
      相关资源
      最近更新 更多