FirebaseError: Missing or insufficient permissions after deleting Google Service Accounts

FirebaseError: Missing or insufficient permissions after deleting Google Service Accounts

用例

我正在使用 Firebase JS SDK 从浏览器访问 Cloud Firestore,这样我就可以将 UI 日志和错误推送到 Firestore。

问题

一切正常,直到我不小心删除了我的 Google 云平台 API 和服务中的大部分服务帐户 →凭据.

下面是我们用于 Firebase Web 应用程序的示例配置:

<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)

实际上,我想清理我的服务帐户,因为有很多是我自己创建的。请指导告知要使用哪个服务帐户以及授予什么合适的权限。

Firestore 安全规则依赖于名为 service-PROJECT_NUMBER@firebase-rules.iam.gserviceaccount.com 且角色为 roles/firebaserules.system。您可以使用 gcloud 恢复此帐户:

gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:service-PROJECT_NUMBER@firebase-rules.iam.gserviceaccount.com --role=roles/firebaserules.system

要获取项目编号,请参阅 Identifying projects