gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:54:21 25 4
gpt4 key购买 nike

我使用自动 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com