You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用URLConnection调用Google Distance Matrix API返回REQUEST_DENIED问题

解决Google Maps API返回"REQUEST_DENIED"的问题

看起来你踩了Google Maps API授权的常见坑!我帮你一步步排查:

1. 最可能的根源:漏启用了关键API

你要获取两地距离和时间,核心依赖的是Google Maps Distance Matrix API,但你只提到启用了Google Maps Android API、Geocoding API和Places API Web Service——这个关键API不在你的启用列表里!赶紧去Google Cloud控制台,找到Distance Matrix API并启用它,这大概率能解决问题。

2. 检查API密钥的配置限制

即使你说密钥是“无限制”的,也可能不小心设置了隐性限制:

  • 打开Google Cloud控制台的API密钥详情页:
    • 如果设置了应用限制(比如Android应用绑定),要确保你的APP包名、SHA-1指纹和控制台里的配置完全一致;测试阶段可以暂时把应用限制改成“无”,验证通过后再恢复。
    • 如果设置了API限制,要确认列表里包含了Distance Matrix API(以及你用到的其他API),否则请求会直接被拒绝。

3. 核对请求URL的正确性

检查你用URLConnection发起请求的完整URL:

  • 确保API端点正确:Distance Matrix API的标准端点是https://maps.googleapis.com/maps/api/distancematrix/json
  • 确认必填参数无误:origin、destination、key这三个参数不能少,且key参数格式必须是key=你的API密钥,别把参数名拼错(比如写成api_key)。
  • 可以直接把请求URL复制到浏览器里访问,看看返回的错误信息会不会更具体,方便定位问题。

4. 确认账单账户已激活

现在Google Maps所有API都要求绑定有效的账单账户,哪怕只用免费额度也必须完成账单激活。如果没绑定账单,哪怕启用了API,请求也会被拒绝。去Google Cloud控制台的账单页面检查一下状态。

5. 检查Android端的基础配置

虽然是用URLConnection发起网络请求,但也要确保你的APP配置没问题:

  • 确认AndroidManifest.xml里添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 如果你在Android 9及以上版本开发,要注意明文网络限制——不过Google Maps API都是HTTPS端点,这一点应该没问题,但还是确认你的URL是https开头的。

你可以先从启用Distance Matrix API开始排查,这是开发者最容易疏漏的点!

内容的提问来源于stack exchange,提问作者avadhoot kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:42:32