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

Unity添加Firebase Auth StateChanged后Google登录失效问题排查

问题排查方案

针对你添加Firebase Auth状态监听后Google登录失效、SignInWithCredentialAsync回调不执行的问题,可按以下步骤排查:

1. 检查AuthStateChanged监听的注册与内部逻辑

  • 确保监听是在Firebase初始化完成后注册的,必须等FirebaseApp.CheckAndFixDependenciesAsync()执行完成后再绑定StateChanged事件,避免未初始化的状态冲突。
  • 检查监听回调AuthStateChanged内部是否有阻塞主线程的操作,或者在回调中直接执行了场景切换(如SceneManager.LoadScene)。如果在Google登录的Credential验证阶段触发了状态变更并立刻切场景,会直接打断SignInWithCredentialAsync的回调流程。

2. 完善SignInWithCredentialAsync的错误捕获

之前的回调可能缺少错误处理逻辑,导致异常无法被捕获。修改代码添加完整的状态判断:

auth.SignInWithCredentialAsync(credential).ContinueWithOnMainThread(task => {
    if (task.IsCanceled) {
        Debug.LogError("Google登录请求被取消");
        return;
    }
    if (task.IsFaulted) {
        Debug.LogError("Google登录失败: " + task.Exception?.InnerException?.Message);
        return;
    }
    // 正常登录后的场景跳转逻辑
});

使用Debug.LogError强制输出日志,能确保异常信息被打印到Logcat,方便定位问题。

3. 验证Google登录Credential的创建逻辑

确认获取IdToken后创建Credential的代码是否正确,避免参数混淆:

// 正确的Google Credential创建方式(使用IdToken)
var credential = GoogleAuthProvider.GetCredential(googleSignInUser.IdToken, null);

如果误将AccessToken传入,会导致验证失败且无明显报错。

4. 排查Firebase Auth状态监听的潜在冲突

  • 检查AuthStateChanged回调中是否有手动修改用户状态的代码(如SignOut()),这类操作会中断正在进行的Google登录流程。
  • 确认FirebaseAuth.DefaultInstance.PersistenceEnabled保持默认的true值,避免状态持久化逻辑干扰登录流程。

5. 检查版本兼容性

验证当前Unity版本与Firebase Auth SDK版本是否兼容,部分旧版SDK在高版本Unity中存在异步回调丢失的问题。尝试升级到最新的兼容版Firebase SDK,优先选择Unity官方推荐的版本组合。

6. 确认AndroidManifest配置完整性

虽然之前Google登录正常,但需检查AndroidManifest.xml中Google登录相关配置是否完整:

  • 确保包含Google Play服务版本的meta-data标签:
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    
  • 确认Google登录的intent-filter和权限配置未被误删,保证回调能正常触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:13:12