使用 Firebase Admin SDK 更新用户时超出配额 - 我如何请求更多?

Kar*_*iem 9 firebase firebase-authentication firebase-admin

当需要启用/禁用整个租户时,我们尝试在我们的多租户设置中更新许多用户。这样,我们有时会遇到QUOTA_EXCEEDED错误,尤其是对于拥有许多用户的大型租户。我在这里问过如何做得更好:一次禁用多个用户

由于目前没有使用 Firebase Admin SDK 更新用户的批量操作,我如何请求提高配额?

如何提高配额?

kev*_*ius 10

对于有同样问题的每个人,这里有一个解决方案。

我联系了 Firebase 支持并得到了这个答案

如果您尝试一次更新用户信息(超过 10 个用户或每秒请求数),那么您将遇到此错误消息“超出更新帐户信息的配额”。请注意,当我们在短时间内收到大量请求时,会自动应用限制以保护我们的服务器。您可以尝试按顺序发送请求(分配负载),而不是并行发送。所以基本上,你需要一次处理一个(而不是一次)以避免错误。

所以我通过超时解决了这个问题,每 100 毫秒发送一个单独的记录

function listAllUsers(nextPageToken) {
        let timeout = 0;
        admin.auth().listUsers(1000, nextPageToken)
            .then(function (listUsersResult) {
                listUsersResult.users.forEach(function (userRecord) {
                    timeout = timeout + 100
                    nextUser(userRecord.uid, timeout)
                });
                if (listUsersResult.pageToken) {
                    listAllUsers(listUsersResult.pageToken);
                }
            })
            .catch(function (error) {
                console.log('Error listing users:', error);
            });
    }
    listAllUsers();
Run Code Online (Sandbox Code Playgroud)

nextUser 函数:

function nextUser(uid, timeout) { 
        setTimeout(() => {
            admin.auth().setCustomUserClaims(uid, { client: true }).then(() => {
            }).catch(function (error) {
                console.log('Error setting user:', error);
            });
        }, timeout);
    }
Run Code Online (Sandbox Code Playgroud)


Fra*_*len 5

火力士在这里

如果您遇到无法从 Firebase 控制台更改的配额限制,请联系Firebase 支持以获得个性化帮助。它们通常可以帮助暂时提高配额,这也是我们的工程团队需要功能的重要指标。

  • auth 限制文档中未提及此用户更新配额。提前了解默认限制有助于开发人员相应地规划和优化用例。我必须联系支持以获得生成电子邮件链接的限制。 (7认同)