如何在Google Cloud控制台限制Firebase API密钥及更新关联配置
核心机制说明
Firebase 控制台自动生成的客户端配置文件(Android 端google-services.json、iOS 端GoogleService-Info.plist),默认绑定的是项目初始化时平台自动创建的无限制默认API密钥。你在Google Cloud Console手动新建的分端受限密钥,不会自动同步关联到Firebase的应用配置条目,因此无论重新下载配置文件、还是新增同包名应用条目,配置里默认带出的都是旧密钥,这是产品默认逻辑,不属于操作故障。
可落地解决方法
方案1:本地覆盖配置(最快生效,无需控制台修改)
这是生产环境最常用的处理方式,不需要调整Firebase控制台任何设置,直接在项目侧替换密钥值即可:
- Android端操作:
- 打开本地项目中的
google-services.json文件,定位到client数组下对应你应用包名的配置块 - 将该配置块下
api_key字段中current_key对应的旧值,替换为你提前创建好的、已配置包名+SHA1签名限制的Android专属新密钥 - 其余字段保持不变,替换完成后重新编译应用即可生效。后续如果重新从Firebase下载配置文件,记得重复执行该替换操作
- 打开本地项目中的
- iOS端操作:
- 打开本地项目中的
GoogleService-Info.plist文件,找到API_KEY对应的条目 - 将条目值替换为你提前创建好的、已配置Bundle ID限制的iOS专属新密钥
- 重新打包应用即可生效
- 打开本地项目中的
注意:替换前必须确认新密钥已勾选所有你业务用到的Google服务访问权限,包括Firebase核心服务、Firebase Auth、Cloud Messaging、Firestore、Google Maps SDK等,否则会出现API调用鉴权失败。
方案2:直接给默认旧密钥加限制(零代码修改,一劳永逸)
如果你不想维护本地配置替换逻辑,完全不需要新建密钥,直接给Firebase绑定的旧默认密钥配置访问限制即可:
- 打开Google Cloud控制台,进入「API和服务-凭据」页面,找到配置文件里对应的旧默认密钥
- 编辑该密钥的应用限制,同时添加Android端的包名+所有版本(debug、release、各渠道包)的SHA1签名指纹,以及iOS端的所有关联Bundle ID
- 编辑该密钥的API限制,勾选所有业务用到的Google服务,保存后等待1-2分钟生效即可
- 生效后原有配置文件不需要做任何修改,所有端的调用会自动走受限的旧密钥,后续从Firebase下载的配置文件也不需要调整
方案3:修改Firebase客户端绑定密钥(后续下载配置自动带新密钥)
如果你希望后续从Firebase下载的配置文件直接写入你新建的分端新密钥,可以按以下步骤操作:
- 打开Google Cloud控制台的「API和服务-凭据」页面,确认你新建的Android、iOS端受限密钥权限配置正确
- 进入Firebase控制台项目设置页,找到对应Android、iOS应用的配置条目,删除原有应用条目
- 重新添加Android、iOS应用,填写包名/Bundle ID、签名指纹信息,走完应用注册流程
- 此时重新下载配置文件,会自动关联到你创建的受限密钥——注意这个操作不会影响你线上已有版本的运行,只是更新控制台的配置关联关系
验证与注意事项
- 替换密钥后不要立刻删除旧密钥,先上线灰度版本,观察Cloud控制台的API监控面板,确认新密钥调用量符合预期、旧密钥无业务流量后,再禁用或删除旧密钥
- Android端务必把所有签名环境的SHA1指纹都加入密钥限制,包括debug签名、release签名、应用市场渠道包签名、App Bundle重签名后的指纹,否则对应环境的服务调用会失败
- iOS端如果有通知扩展、分享扩展等组件也用到Google服务,需要把对应扩展的Bundle ID也加入iOS密钥的限制列表
内容的提问来源于stack exchange,提问作者f_t
相关产品推荐
相关产品推荐

