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

基于Expo开发的安卓应用使用Firebase Auth的API密钥如何设置安卓限制

解答

首先明确结论:可以将Firebase Authentication的API密钥设置为仅允许你的Expo安卓应用调用,你当前的报错是校验参数传递缺失导致的。

问题根因

Firebase Auth的安卓应用限制校验逻辑和Maps SDK、Geocoding API不同:

  • 你之前配置的地图、地理编码API调用时,原生模块会自动携带APK的包名、签名SHA1信息随请求发送,能匹配GCP的限制规则
  • 你当前用的Firebase JS SDK(Expo默认对接的Web版SDK)不会自动携带这些校验参数,导致GCP识别不到合法的客户端信息,就会拦截请求,你看到的auth/requests-from-this-android-client-application-<empty>-are-blocked.报错就是因为请求里的客户端字段为空。

解决方案

方案1(推荐):切换为原生封装的Firebase Auth库

替换Web版Firebase SDK,使用@react-native-firebase/auth或者expo-firebase-auth这类原生封装插件:

  • 这类插件会调用安卓原生Firebase SDK,自动在Auth请求中携带包名、SHA1校验信息,完全匹配你在GCP控制台配置的限制规则
  • 调整后重新同步google-services.json配置,确保文件内的OAuth 2.0客户端ID、API密钥和GCP控制台的配置完全一致即可正常调用。

方案2:保留Web SDK,手动添加校验请求头

如果不想更换现有SDK,可以在Firebase初始化后手动给所有Auth请求添加两个自定义头:

  • X-Android-Package:填写你的应用包名,和app.json里expo.android.package的取值一致
  • X-Android-Cert:填写你的SHA1指纹的小写、无冒号格式,比如原始SHA1为A1:B2:C3:D4...,则转写为a1b2c3d4...

后续注意事项

应用后续上架Google Play时,需要把Google Play应用签名的SHA1指纹也添加到GCP API密钥的允许列表中,否则上架后的正式版本会被拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:33:02