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

生产环境Firebase Remote Config获取失败:用户未授权问题求助

解决Firebase Remote Config生产环境FetchException(403 Forbidden)问题

嘿,我看你在生产环境配置Firebase Remote Config时碰到了FirebaseRemoteConfigFetchException,而且核心是403未授权错误——结合你说的开发环境正常、仅生产环境加了SHA指纹的情况,咱们可以从这几个方向排查:

1. 确认生产环境SHA证书指纹已正确添加到Firebase控制台

这是最可能的原因,毕竟你提到生产和开发的唯一差异就是SHA指纹:

  • 确保你把生产签名密钥的SHA-1和SHA-256都添加到了Firebase项目的「项目设置」→「应用」→「SHA证书指纹」里;
  • 如果用了Google Play App Signing,别忘了把Google Play提供的「应用签名证书指纹」也加进去,很多人会漏掉这个环节。

2. 重新下载并替换google-services.json

添加新的SHA指纹后,Firebase会更新配置文件里的授权信息:

  • 去Firebase控制台重新下载google-services.json,替换到你项目的app目录下;
  • 一定要确保生产打包时用的是这个更新后的配置文件,别不小心用了旧的开发版配置。

3. 检查Firebase Remote Config API是否启用

有时候会忽略这个细节:

  • 打开Google Cloud Console,找到你的Firebase项目,搜索「Firebase Remote Config API」,确认它处于「已启用」状态;
  • 开发环境可能默认启用了,但生产环境对应的项目可能需要手动开启(不过大部分情况Firebase会自动配置,查一下更稳妥)。

4. 验证API密钥的应用限制

如果你的API密钥设置了限制,要确保生产环境的信息符合要求:

  • 在Google Cloud Console的「API和服务」→「凭据」里,找到对应Android应用的API密钥;
  • 检查「应用限制」里是否包含了生产环境的包名+SHA指纹组合,两者缺一不可。

5. 清除客户端缓存后重试

客户端可能缓存了旧的授权信息,干扰新配置的生效:

  • 卸载生产环境的应用,清除设备上的相关缓存;
  • 重新安装签名后的生产APK,再测试Remote Config的fetch操作。

你提供的错误日志:

2019-02-08 22:59:52.755 19724-19744/? W/System.err: java.io.IOException: com.google.android.gms.internal.firebase_remote_config.zzas.read() returned value out of range -1..255: -117
2019-02-08 22:59:52.755 19724-19744/? W/System.err: at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:273)
2019-02-08 22:59:52.755 19724-19744/? W/System.err: at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:260)
2019-02-08 22:59:52.755 19724-19744/? W/System.err: at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
2019-02-08 22:59:52.755 19724-19744/? W/System.err: at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:80)
2019-02-08 22:59:52.755 19724-19744/? W/System.err: at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:92)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzad.getContent(Unknown Source:46)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzd.zza(Unknown Source:12)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzm.zza(Unknown Source:14)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzg.zzb(Unknown Source:5)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzaa.zzad(Unknown Source:178)
2019-02-08 22:59:52.756 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzf.zzi(Unknown Source:51)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzer.zzc(Unknown Source:41)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzer.zzb(Unknown Source:23)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzer.zza(Unknown Source:149)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at com.google.android.gms.internal.firebase_remote_config.zzes.then(Unknown Source:6)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at com.google.android.gms.tasks.zzf.run(Unknown Source:2)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
2019-02-08 22:59:52.757 19724-19744/? W/System.err: at java.lang.Thread.run(Thread.java:764)
2019-02-08 22:59:52.757 19724-19744/? E/FirebaseRemoteConfig: Fetch failed! Server responded with an error. com.google.android.gms.internal.firebase_remote_config.zzd: 403 Forbidden
at com.google.android.gms.internal.firebase_remote_config.zzm.zza(Unknown Source:14)
at com.google.android.gms.internal.firebase_remote_config.zzg.zzb(Unknown Source:5)
at com.google.android.gms.internal.firebase_remote_config.zzaa.zzad(Unknown Source:178)
at com.google.android.gms.internal.firebase_remote_config.zzf.zzi(Unknown Source:51)
at com.google.android.gms.internal.firebase_remote_config.zzer.zzc(Unknown Source:41)
at com.google.android.gms.internal.firebase_remote_config.zzer.zzb(Unknown Source:23)
at com.google.android.gms.internal.firebase_remote_config.zzer.zza(Unknown Source:149)
at com.google.android.gms.internal.firebase_remote_config.zzes.then(Unknown Source:6)
at com.google.android.gms.tasks.zzf.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
2019-02-08 22:59:52.759 19724-19754/? E/FirebaseRemoteConfig: Fetch failed! com.google.firebase.remoteconfig.FirebaseRemoteConfigFetchException: Fetch failed: The user is not authorized to access the project. Please make sure you are using the API key that corresponds to your Firebase project. Check logs for details.
at com.google.android.gms.internal.firebase_remote_config.zzer.zzc(Unknown Source:77)
at com.google.android.gms.internal.firebase_remote_config.zzer.zzb(Unknown Source:23)
at com.google.android.gms.internal.firebase_remote_config.zzer.zza(Unknown Source:149)
at com.google.android.gms.internal.firebase_remote_config.zzes.then(Unknown Source:6)
at com.google.android.gms.tasks.zzf.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:29:42