我正在使用Firebase JS SDK从浏览器访问Cloud Firestore,以便将UI日志和错误推送到Firestore。
直到我无意间在APIs&Services→凭据中的Google Cloud Platform中删除了大多数服务帐户之前,一切正常。
下面是我们用于Firebase Web App的示例配置:
<script src="https://www.gstatic.com/firebasejs/7.13.1/firebase-app.js"></script> <script> // Your web app's Firebase configuration var firebaseConfig = { apiKey: "AIzaSyCztfcT6k6yXXXXXXXXXXXXXXXXXX", authDomain: "<some-domain>.firebaseapp.com", databaseURL: "https://<some-domain>.firebaseio.com", projectId: "<some-domain>", storageBucket: "<some-domain>.appspot.com", messagingSenderId: "877458876543", appId: "1:877458876543:web:9a9287dee234cd655ab7f2" }; // Initialize Firebase firebase.initializeApp(firebaseConfig); </script>
我什至尝试阅读Firebase Service Accounts Overview,但无法决定将哪个服务帐户用于Firestore。然后,我尝试根据我的项目ID添加不同的服务帐户,并向他们授予我的项目所有者权限,但这没有用。
我在浏览器控制台中遇到完全错误:
Uncaught (in promise) FirebaseError: Missing or insufficient permissions. at new Hr (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:48219) at https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:378673 at wr.<anonymous> (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:377569) at Wt (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:15221) at wr.S.dispatchEvent (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:16063) at Er.ua (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:45322) at nr.S.Fa (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:43229) at Ge (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:21453) at qe (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:20854) at Me.S.Ja (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:23264)
实际上,我想清理我的服务帐户,因为我自己创建了许多帐户。请指导您使用哪个服务帐户以及要授予的权限。
用例我正在使用Firebase JS SDK从浏览器访问Cloud Firestore,以便将UI日志和错误推送到Firestore。问题一切正常,直到我无意间删除了大多数...
Firestore安全规则取决于角色为service-[PROJECT_NUMBER]@firebase-rules.iam.gserviceaccount.com
的服务帐户roles/firebaserules.system
。您可以使用gcloud
还原此帐户: