Unity中Firebase授权SignInWithEmailAndPasswordAsync在API密钥限安卓后失败求助
保留API密钥限制下的Firebase邮箱密码认证解决方案
1. 核对包名与SHA-1的准确性
- 确认Firebase控制台填写的SHA-1是你当前打包用的密钥库(发布/调试)的真实值,别搞混调试和发布密钥。
- 包名必须和Unity Player Settings里的Bundle Identifier完全一致,大小写、符号都不能差。
- 验证方式:导出APK后用命令
apksigner verify --print-certs 你的APK文件.apk查看APK的SHA-1和包名,和控制台的配置逐一比对。
2. 为API密钥添加Firebase Auth所需的API权限
在Firebase控制台的API密钥设置页,找到「API限制」模块,添加以下两个API:
- Firebase Authentication API
- Identity Toolkit API
这俩是邮箱密码认证的核心依赖,没加的话会被限制拦截。
3. 替换最新的google-services.json
修改API密钥限制后,必须重新下载Firebase控制台的google-services.json,替换Unity项目 Assets/Plugins/Android 下的旧文件,旧文件的缓存配置会导致请求不匹配。
4. 检查Unity打包的密钥配置
- 在Player Settings的Publishing Settings里,确认已勾选Custom Keystore,且密钥库文件、密码、密钥别名都配置正确。
- 调试阶段如果用Unity默认调试密钥,要把调试密钥的SHA-1也添加到Firebase控制台的安卓应用配置中(支持多个SHA-1)。
5. 捕获错误日志定位问题
在代码里捕获具体的认证错误,方便精准排查:
try { var authResult = await FirebaseAuth.DefaultInstance.SignInWithEmailAndPasswordAsync(email, password); } catch (FirebaseException ex) { Debug.LogError($"认证失败:{ex.Message},错误码:{ex.ErrorCode}"); }
比如ApiNotEnabled对应API未开启,AppNotAuthorized对应包名/SHA-1不匹配,InvalidApiKey则是密钥配置问题。
内容的提问来源于stack exchange,提问作者JayakumarSivasankar
相关产品推荐
相关产品推荐

