0

用例

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

问题

一切正常,直到我不小心删除了 Google Cloud Platform APIs & Services → Credentials中的大部分服务帐户

下面是我们用于 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)

实际上,我想清理我的服务帐户,因为我自己创建了很多。请指导告知要使用哪个服务帐户以及提供哪些合适的权限。

4

1 回答 1

4

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

要获取项目编号,请参阅识别项目

于 2020-04-02T23:15:58.610 回答