似乎我可以在没有任何授权的情况下使用get方法,但listCollectionIds
需要一些密钥才能访问,因为我在没有它的情况下会得到403错误。
当我在Google的API资源管理器实用程序上使用OAuth 2.0时,我可以访问这些数据。
Firestore安全规则当前设置为允许所有操作。是否有方法禁用listCollectionIds
的身份验证?
您不能使用客户端SDK列出集合或删除对其的任何限制。只有管理员SDK才能使用服务帐户访问listCollections()
方法。文件显示,
使用移动/web客户端库无法检索集合列表。您应该只在受信任的服务器环境中作为管理任务的一部分来查找集合名称。如果您发现在移动/web客户端库中需要此功能,请考虑重新构建数据,以便子集合名称是可预测的。
也就是说,最好将集合(或子集合(的列表存储在文档中数据库的其他位置。
另一种方法是创建一个云函数,代表用户获取集合列表。
exports.getCollections = functions.https.onCall(async (data, context) => {
// Authorize user if needs
const collections = await admin.firestore().listCollections()
return collections
});