PAYATHON 2026

如何解决 You have exceeded your daily request quota for this API

数据小许

结论

这个错误不一定说明请求量真的超过了限制。对于 Google Maps JavaScript API,更常见的原因是:浏览器当前使用的 API Key 所属项目没有有效的结算账户,或者结算状态、API 启用状态、配额、Key 限制最近发生了变化。

账户过去正常运行了 4 年,也不能排除结算失败、信用卡过期、项目绑定变更、API Key 被替换或配额被调整等情况。排查时,应以页面实际加载的 Key 及其所属 Google Cloud 项目为准,不能只确认某个账户已经开通 billing。

先确认报错来自哪个项目

在浏览器开发者工具的 Network 面板中找到 Maps JavaScript API 请求,例如:

https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places

确认请求中的 key 是预期使用的 Key,同时检查:

  • 生产环境是否仍在引用旧 Key。
  • CDN、缓存或环境变量中是否保留了旧配置。
  • 页面是否重复加载了 Google Maps JavaScript API。
  • 不同子域名是否使用了不同 Key。
  • 前端构建产物中的 Key 是否与 Google Cloud Console 中检查的 Key 一致。

需要注意,billing 绑定的是 Google Cloud 项目,不是 Key。即使另一个项目已经启用结算,当前 Key 也不会因此自动获得结算能力。

检查结算账户状态

进入 Google Cloud Console,切换到 API Key 所属项目,然后打开 Billing 页面:

  1. 确认项目已经关联结算账户。
  2. 确认结算账户有效,没有关闭、暂停或处于待验证状态。
  3. 检查信用卡是否过期、扣款是否失败。
  4. 检查是否存在付款资料验证、消费上限或账户权限问题。
  5. 如果近期迁移过项目或结算账户,确认绑定关系没有丢失。

如果页面显示项目已经关联 billing,但错误仍然存在,可以尝试解除并重新关联结算账户。这个操作可能影响项目中的其他付费服务,因此需要先确认影响范围。结算异常也可能需要通过 Google Cloud Console 提交 Billing Support 工单。

检查相关 API 是否已启用

报错来自哪个接口,就要在同一个项目中启用对应的 API。地图和地点搜索通常会同时用到多个服务,例如:

  • Maps JavaScript API
  • Places API
  • Places API (New)
  • Geocoding API
  • Directions API

不能只确认笼统的 “Google Locations API” 已经启用。Google Cloud Console 中的服务名称可能随产品调整而变化,需要根据实际调用的端点和前端使用的库逐项核对。

例如,页面使用 Places Library 时,可能会这样加载:

<script
  async
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap">
</script>

此时至少要检查 Maps JavaScript API,并确认当前代码依赖的 Places 服务已在该 Key 所属项目中启用且可以计费。

检查每日配额和限制

在 Google Cloud Console 中进入:

APIs & Services → Enabled APIs & services → 对应 API → Quotas

重点检查:

  • 每日请求配额是否被手动设得过低。
  • 每分钟请求数或每用户每分钟请求数是否已经耗尽。
  • 是否存在组织策略或管理员设置的配额上限。
  • 当天流量是否突然增加。
  • API Key 是否泄露并被其他网站使用。
  • 是否刚提交过配额调整,导致限制发生变化。

如果配额页面显示实际使用量已经达到上限,应先查清流量来源,再申请提高配额。直接提高配额可能会增加 Key 泄露带来的费用风险。

检查 API Key 限制

浏览器端的 Maps JavaScript API 通常使用 HTTP referrers (web sites) 限制。确认允许列表覆盖当前域名和协议,例如:

https://example.com/*
https://www.example.com/*
https://*.example.com/*

下面这种配置经常导致网站上线后突然失败:

http://example.com/*

如果网站已经切换到 HTTPS,上面的规则就无法匹配,需要改为:

https://example.com/*

还要检查 API restrictions。如果选择了 “Restrict key”,需要将实际使用的 API 全部加入允许列表。不要把浏览器端 Key 配置为只允许服务器 IP,也不要使用仅允许 Maps JavaScript API 的 Key 调用服务器端 Places 或 Geocoding 接口。

排查时可以短暂移除 Key 限制,但只能用于受控测试。确认原因后应立即恢复限制,防止 Key 被滥用。

检查前端加载方式

确保 API 只加载一次,并在脚本加载完成后初始化地图:

<div id="map"></div>

<script>
  function initMap() {
    const map = new google.maps.Map(document.getElementById("map"), {
      center: { lat: 31.2304, lng: 121.4737 },
      zoom: 12
    });
  }
</script>

<script
  async
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

如果项目使用 Places Library:

<script
  async
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap">
</script>

不要同时通过主题、插件、标签管理器和业务代码加载多个不同的 Key。重复加载会让控制台信息混在一起。看起来页面使用的是已经启用结算的新 Key,实际报错的却可能是旧 Key。

查看更具体的错误信息

You have exceeded your daily request quota 是一条比较笼统的提示。控制台附近通常还会显示更具体的错误码,例如:

  • BillingNotEnabledMapError
  • ApiNotActivatedMapError
  • InvalidKeyMapError
  • RefererNotAllowedMapError
  • OverQuotaMapError

具体错误码通常更有助于定位问题。建议同时查看:

  • 浏览器 Console 中的完整错误信息。
  • Network 面板中 Maps 请求的 URL 和响应。
  • Google Cloud Console 中的 Metrics 与 Quotas。
  • Billing 页面的异常通知。
  • 项目的 Audit Logs,确认近期是否有人修改了 API、Key、配额或结算配置。

建议的排查顺序

按照下面的顺序处理通常更快:

  1. 在浏览器 Network 面板中确认页面实际使用的 API Key。
  2. 找到该 Key 所属的 Google Cloud 项目。
  3. 确认该项目绑定了有效的结算账户。
  4. 确认 Maps JavaScript API 及相关服务已经启用。
  5. 查看每日及每分钟配额是否耗尽或被调低。
  6. 检查 Key 的 referrer 和 API restrictions。
  7. 检查是否存在异常流量或 Key 泄露。
  8. 修正配置后清理 CDN、页面和浏览器缓存,然后重新测试。
  9. 如果所有配置均正常但错误仍然存在,携带项目 ID、具体错误码和发生时间联系 Google Maps Platform Support。

不要在工单、日志截图或公开页面中暴露完整的 API Key。如果确认 Key 已经泄露,应创建新 Key、更新生产配置,在验证新 Key 正常后撤销旧 Key,并为新 Key 配置正确的域名和 API 限制。

备注:内容仅供参考。