我已经建立了一个使用Firestore数据库的Firebase项目。我得到了以下代码片段,可以在我的Javascript代码中使用它:
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxxxxxxx.firebaseio.com",
projectId: "xxxxxxxx",
storageBucket: "xxxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxx",
appId: "1:xxxxxxxxxxxxxxxxxxxxxxxxxxx"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
所有人都在努力。然后,我需要通过在Firebase项目以及Google Cloud Platform项目的“凭据”菜单中的apiKey上设置授权域,来确保只有我的域可以使用该应用程序。
到目前为止,我的项目仍然有效,但是我注意到它仍然可以在任何领域使用。因此,该限制无效。实际上,通过更多的测试,我发现apiKey甚至对于我的项目来说甚至不是必需的,并且我可以将snipet减少到以下内容,并且仍然可以正常工作:
// Your web app's Firebase configuration
var firebaseConfig = {
projectId: "xxxxxxxx",
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
所以我想知道:仅给出projectId的项目如何在Firestore数据库中运行和编写?片段中提供了很多我什至不需要的信息。
有人知道为什么会发生在我身上吗?我尝试创建一个新项目,再次遵循不同的教程,结果相同。实际上,我使用的其中一本教程具有相同的行为,就像我可以使用本教程的项目(它实际上是在线的)一样,只需指定projectId,我就可以通过从本地服务器发送垃圾邮件来使Firestoere配额用完。 / p>
我找不到与我的类似案件有关的任何信息。请帮忙。
PS:这很重要,这是我的Firestore数据库规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
答案 0 :(得分:1)
每个Firebase项目实际上都是一个Google Cloud项目,并且每个云项目都有唯一的ID。由于每个项目只能有一个Firestore实例,因此仅使用项目ID进行定位就足够了。
配置文件中的其他值用于其他Firebase产品。如果您不使用这些产品,则不需要它们。如果适合,请随时将它们排除在外。请记住,如果不使用完整配置,将来可能会遇到问题。
如果您担心Firestore实例的安全性,则应该使用安全性规则来限制谁可以读写哪些数据。无法根据您的Web应用程序域或用户位置来限制对其的访问。您现在拥有的规则允许具有Internet连接的任何人创建,修改和删除Firestore实例中的任何文档。您可能要更改它。