【问题标题】:Firebase auth - how to un-protect listCollectionIds method in REST APIFirebase auth - 如何取消保护 REST API 中的 listCollectionIds 方法
【发布时间】:2021-09-19 03:13:18
【问题描述】:

似乎我可以在没有任何授权的情况下使用get method,但listCollectionIds 需要一些密钥才能访问,因为没有它我会收到 403 错误。

当我在 Google 的 API Explorer 实用程序上使用 OAuth 2.0 时,我能够访问该数据。

Firestore 安全规则当前设置为允许一切操作。有没有办法禁用listCollectionIds 的身份验证?

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-firestore firebase-security


    【解决方案1】:

    您不能使用客户端 SDK 列出集合或删除对其的任何限制。只有Admin SDKs 可以使用服务帐户访问listCollections() 方法。 documentation 说,

    使用移动/网络客户端库无法检索集合列表。您应该只在受信任的服务器环境中将集合名称作为管理任务的一部分进行查找。如果您发现在移动/Web 客户端库中需要此功能,请考虑重组您的数据,以便子集合名称是可预测的。

    话虽如此,您能做的最好的事情就是将集合(或子集合)列表存储在数据库中其他位置的文档中。

    解决此问题的其他方法是创建一个云函数,该函数将代表您的用户获取集合列表。

    exports.getCollections = functions.https.onCall(async (data, context) => {
      // Authorize user if needs 
      const collections = await admin.firestore().listCollections()
      return collections
    });
    

    【讨论】:

    • 谢谢 - 我希望他们对 REST API 文档有这个解释,但我会假设适用于 SDK 的相同逻辑
    • 也为此花费了几个小时,因为我只引用了 REST api。
    猜你喜欢
    • 2014-09-21
    • 1970-01-01
    • 2022-01-01
    • 2019-08-21
    • 2021-06-09
    • 2019-04-02
    • 2021-05-16
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多