如何在.NET中获取Firebase Firestore的所有根级集合
获取Firebase Firestore根级集合的.NET实现方案
方法一:使用Firebase Admin SDK
Firebase Admin SDK提供了直接获取根集合的异步方法,以下是完整实现步骤:
- 确保已安装必要的NuGet包:
FirebaseAdmin和Google.Cloud.Firestore - 初始化SDK并获取集合列表:
using FirebaseAdmin; using Google.Apis.Auth.OAuth2; using Google.Cloud.Firestore; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { // 初始化Firebase Admin SDK(仅需执行一次) if (FirebaseApp.DefaultInstance == null) { FirebaseApp.Create(new AppOptions { Credential = GoogleCredential.FromFile("你的服务账号密钥路径.json") }); } var db = FirestoreDb.DefaultInstance; // 获取所有根级集合 var rootCollections = await db.ListRootCollectionsAsync(); // 遍历输出集合名称 foreach (var collection in rootCollections) { Console.WriteLine($"根集合ID:{collection.Id}"); } } }
方法二:调用Firestore REST API
如果更倾向于用REST请求,可通过Firestore官方REST接口实现,需用服务账号认证:
using Google.Apis.Auth.OAuth2; using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { // 加载服务账号并获取访问令牌 var credential = GoogleCredential.FromFile("你的服务账号密钥路径.json") .CreateScoped("https://www.googleapis.com/auth/cloud-platform"); var accessToken = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync(); // 发送GET请求获取根集合 using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); var projectId = "你的Firebase项目ID"; var apiUrl = $"https://firestore.googleapis.com/v1/projects/{projectId}/databases/(default)/collections"; var response = await httpClient.GetAsync(apiUrl); response.EnsureSuccessStatusCode(); // 确保请求成功 // 解析返回的JSON数据 var jsonContent = await response.Content.ReadAsStringAsync(); var result = JsonSerializer.Deserialize<JsonElement>(jsonContent); // 遍历输出集合名称 foreach (var collection in result.GetProperty("collections").EnumerateArray()) { Console.WriteLine($"根集合ID:{collection.GetProperty("id").GetString()}"); } } }
注意事项
- 服务账号需配置
Cloud Datastore Viewer或更高权限,确保能访问Firestore数据 - 替换代码中的服务账号密钥路径、项目ID为你自己的实际信息
内容的提问来源于stack exchange,提问作者Mohammad Amirdoust
相关产品推荐
相关产品推荐

