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

Flutter调用Google Maps报API密钥认证REQUEST_DENIED错误排查

Flutter调用Google Maps Platform报REQUEST_DENIED(未传API密钥)排查修复

以下是该错误的高频触发原因及对应修复方式,按排查优先级排序:

  • AndroidManifest配置错误
    首先核对配置文件里的密钥声明:
    1. 标签层级错误:存放密钥的<meta-data>标签必须是<application>标签的直接子节点,不能嵌套在<activity>、<provider>等其他标签内部
    2. name属性写错:新版Google Maps SDK对应的name属性固定为com.google.android.geo.API_KEY,不少人会误写为旧版的com.google.android.maps.v2.API_KEY,会导致系统完全读取不到配置的密钥
      正确配置示例如下:
    <application
      android:label="你的Flutter应用名"
      android:icon="@mipmap/ic_launcher">
      <!-- 其他已有应用配置 -->
      <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="替换为你自己的GCP生成的API密钥"/>
      <!-- 后续Activity等配置 -->
    </application>
    
  • Web服务类接口未手动传参密钥
    如果你不是通过google_maps_flutter官方插件调用原生地图能力,而是自行构造HTTP请求调用地点自动补全、路径规划、地理编码这类Web服务接口,写在AndroidManifest里的密钥不会自动附加到网络请求中,必须在请求的query参数中显式携带key=你的API密钥,漏传该参数就会直接触发你遇到的错误。
    以地点自动补全接口为例,合法请求格式为:
    GET https://maps.googleapis.com/maps/api/place/autocomplete/json?input=关键词&key=你的API密钥
    
  • GCP端密钥配置不匹配
    1. 未启用对应API:在GCP控制台的API库中,确认你给当前密钥开通了所有正在调用的API权限——比如调用地点自动补全需要单独启用Places API,仅启用Maps SDK for Android不会开放Web服务类接口的调用权限
    2. 应用限制不匹配:如果你的密钥设置了Android应用限制,需要确保配置的应用包名、SHA-1签名指纹和你当前运行环境完全匹配:调试运行时默认使用的是系统debug.keystore生成的SHA-1,打release包时需要替换为你自己正式签名文件的SHA-1,漏加调试签名的SHA-1是非常高频的踩坑点;如果密钥加了Android应用限制,就不能用这个密钥发起Web服务类的HTTP请求,限制类型必须和调用场景对应
    3. 结算账户状态异常:确认你绑定的结算账户没有过期、欠费,账户异常时即使密钥配置正确也会返回鉴权失败
  • 构建缓存导致配置未生效
    所有配置修改完成后,依次执行以下命令清理缓存,再卸载设备上已安装的旧版App重新编译:
    flutter clean
    flutter pub get
    

快速排查技巧:可以先把GCP里的API密钥临时改成「无应用限制」,跑通接口请求后再逐步加限制,能快速定位是不是限制规则配置错了导致的问题


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:57:07