Unity 2020.3.1f1无法连接Firebase Auth匿名登录问题求助
代码问题排查
- 首先修正语法错误:
Awake方法中输出依赖错误的日志行存在变量名错误,将dependency status改为正确的变量名dependencyStatus,变量名中的空格会导致编译异常,阻断后续初始化逻辑执行。 - 补充防重复登录逻辑:当前在
AuthStateChanged事件中直接触发匿名登录,事件多次触发会导致重复调用登录接口,新增登录状态标记避免该问题,同时补充内层异常打印获取真实报错原因:
// 新增私有变量 private bool _isLoggingIn = false; // 修改AuthStateChanged中的登录触发逻辑 else { if (!_isLoggingIn) { _isLoggingIn = true; StartCoroutine(SignAnonymously()); } } // 修改SignAnonymously的异常处理分支 if (loginTask.Exception != null) { _isLoggingIn = false; // 打印内层异常获取真实报错原因 var innerException = loginTask.Exception.Flatten().InnerException; Debug.LogWarning($"登录失败,错误详情:{innerException?.Message}"); } else { _isLoggingIn = false; User = loginTask.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", User.DisplayName, User.UserId); }
配置与环境排查
- 确认Firebase控制台Auth页面的匿名登录开关已启用,该功能默认关闭,未开启会直接返回权限错误。
- 如果你打包的是iOS端,除了核对google-services.json,还要确认
GoogleService-Info.plist文件配置正确且已导入到Unity项目中。 - 若使用IL2CPP打包,确认项目中已有link.xml文件并添加了Firebase Auth的代码保留规则,避免IL2CPP裁剪掉Auth相关运行时代码:
<linker> <assembly fullname="Firebase.Auth" preserve="all"/> <assembly fullname="Firebase.Core" preserve="all"/> </linker>
- 测试阶段关闭系统/浏览器代理,多数代理会拦截Firebase Auth的请求,导致连接超时。
- 确认Firebase SDK版本一致,Auth和Database SDK如果版本不匹配也会出现部分功能正常、部分功能异常的问题。
内容的提问来源于stack exchange,提问作者YouCanCallMe Syarif
相关产品推荐
相关产品推荐

