javascript - 使用 init.js 时如何设置 authDomain

标签 javascript firebase

我使用自动 SDK URL 来初始化 Firebase:

<script src="/__/firebase/6.1.1/firebase-app.js"></script>
<script src="/__/firebase/6.1.1/firebase-auth.js"></script>
<script src="/__/firebase/6.1.1/firebase-storage.js"></script>
<script src="/__/firebase/6.1.1/firebase-messaging.js"></script>
<script src="/__/firebase/6.1.1/firebase-firestore.js"></script>
<script src="/__/firebase/init.js"></script>

我需要将 authDomain 设置为在 Firebase 上设置的业务域,以便 Google Gmail 身份验证显示我的域名而不是我的 Firebase 项目名称。

我是否必须停止使用这些网址,转而构建配置并手动初始化 Firebase?或者有没有办法单独更新authDomain?

我尝试了以下方法来查看是否可以获得配置设置,然后我计划修改 authDomain。相反,我收到了一个错误。

<script>
fetch('/__/firebase/init.json').then(async response => {
  firebase.initializeApp(await response.json());
});
</script>

这是开发者日志中的错误:

(index):195 Uncaught (in promise) TypeError: Failed to execute 'json' on 'Response': body stream is locked at (index):195 (anonymous) @ (index):195 errors.ts:137 Overwriting FirebaseError base field "name" can cause unexpected behavior.

[更新} 似乎 fetch 是异步的,并且所有脚本也异步加载。最重要的是,几乎不可能以编程方式获取配置信息,更改 authDomain,然后在加载我的框架脚本并初始化依赖于已经存在的 firebase 的主应用程序之前调用initializeApp。

这是我尝试过的异步版本:

await fetch('/__/firebase/init.json').then(async (response)=> {
    let config = await response.json();
    config[authDomain] = 'mydomain.com';
    await firebase.initializeApp(config);
});

最佳答案

您应该能够使用它,只需等待 fetch() promise 解析,然后再尝试使用 Firebase 执行任何操作。

例如

const firebaseReady = fetch('/__/firebase/init.json')
  .then(res => res.ok ? res.json() : Promise.reject(res))
  .then(config => {
    // do whatever you need to do with config
    return firebase.initializeApp(config)
  })

现在您只需遵守 firebaseReady promise 即可。例如

firebaseReady.then(app => {
  const db = app.firestore()
  const auth = app.auth()

  // do other things here
})

关于javascript - 使用 init.js 时如何设置 authDomain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056347/

相关文章:

ios - 在 iOS (Swift) 上安装 FirebaseUI 的代码是什么

javascript - Firebase Cloud Functions - 如何调用另一个函数并返回对象

javascript - 使内部 div 可滚动

javascript - 在 JavaScript 中扁平化 JSON

javascript - 如何在 firebase 中获取对象的先前值(值)?

android - 如何仅获取 TextView 中数组内的值

javascript - Ramda 中的 curry 和偏函数有什么区别?

javascript - 无法推送到 JS 中的数组

javascript - 如何停止在特定按钮上生成代码?

swift - Firebase 存储 downloadURL 部分应用 @nonobjc 消息的转发器