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

Firebase Auth Emulator异常:频繁唤起真实Google账号而非模拟账号

解决Firebase Auth Emulator唤起真实Google账号的问题

问题核心

你的FirebaseUI使用的Auth实例未正确连接到Auth模拟器,导致优先调用真实的Google OAuth流程,而非模拟器的虚拟账号界面。

解决方案

1. 确保FirebaseUI使用已连接模拟器的Auth实例

当前代码中,模块化的getAuth()已连接模拟器,但FirebaseUI初始化时用的是compat版本的app.auth()(未连接模拟器),导致两者不一致。修改FirebaseUiComponent的初始化逻辑:

import { getAuth } from 'firebase/auth'; // 导入模块化Auth
import * as fbui from 'firebaseui';

export class FirebaseUiComponent implements OnInit, OnDestroy {
  dialogRef = inject(MatDialogRef<FirebaseUiComponent>);
  ui!: fbui.auth.AuthUI;

  uiConfig = {
    callbacks: {
      signInSuccessWithAuthResult: (authResult) => this.dialogRef.close(authResult),
      signInFailure: (error) => this.dialogRef.close(error),
    },
    signInOptions: [getAuth().GoogleAuthProvider.PROVIDER_ID], // 使用模块化的Provider ID
    signInFlow: 'popup',
    // ...
  };

  ngOnInit() {
    const auth = getAuth(); // 直接使用已连接模拟器的Auth实例
    this.ui = new fbui.auth.AuthUI(auth);
    this.ui.start('#firebaseui-auth-container', this.uiConfig);
    this.ui.disableAutoSignIn();
  }

  ngOnDestroy() { this.ui.delete(); }
}

2. 清除浏览器缓存与账号会话

浏览器缓存的Google登录会话会干扰模拟器流程,可通过以下方式排查:

  • 使用隐私/无痕模式测试,避免缓存影响
  • 清除浏览器中Firebase相关的LocalStorage和SessionStorage
  • 退出浏览器中已登录的所有Google账号

3. 验证模拟器运行状态

确保Auth模拟器正常启动:

  • 确认终端中Firebase模拟器已运行(显示Auth Emulator running at http://127.0.0.1:9099)
  • 直接访问http://127.0.0.1:9099,能看到模拟器控制台则说明正常

4. 统一Firebase版本兼容性

确保@angular/fire、firebase、firebase/compat的版本完全一致,避免版本冲突导致Auth实例连接失败。可在package.json中检查版本号,比如:

{
  "@angular/fire": "^7.6.1",
  "firebase": "^9.23.0",
  "firebaseui": "^6.0.2"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:53:20