如何通过FirebaseAdmin在C#服务端访问Firebase Firestore数据库
解决方案
1. ServiceAccountKey 路径配置方案
- 本地开发配置:将下载的
serviceAccountKey.json文件放到C#项目根目录,右键文件选择「属性」,将「复制到输出目录」设置为如果较新则复制,此时代码中路径可以直接写文件名:
Credential = GoogleCredential.FromFile("serviceAccountKey.json")
- 相对/绝对路径通用规则:如果文件存放在其他位置,可传入绝对路径(如
@"C:\keys\serviceAccountKey.json"),或是基于程序运行目录的相对路径,避免硬编码路径可通过配置文件读取路径值。 - 生产环境配置:推荐将密钥内容存入服务环境变量,改用
GoogleCredential.FromJson(Environment.GetEnvironmentVariable("FIREBASE_SERVICE_ACCOUNT"))加载,避免密钥文件泄露。
注意:你现有代码中的
ServiceAccountId参数无需手动赋值,服务账号密钥文件已包含对应信息,可直接删除该行配置。
2. 访问Firestore数据库实例
初始化FirebaseApp完成后,直接通过FirestoreDb类获取实例即可操作:
// 初始化FirebaseApp(修正配置后的示例) AppOptions appOptions = new AppOptions() { Credential = GoogleCredential.FromFile("serviceAccountKey.json"), ProjectId = "你的Firebase控制台项目ID" // 注意不是自定义的应用名,需和控制台项目ID一致 }; var firebaseApp = FirebaseApp.Create(appOptions); // 获取Firestore实例 FirestoreDb db = FirestoreDb.Create("你的Firebase项目ID", firebaseApp); // 操作示例:添加文档 DocumentReference docRef = db.Collection("你的集合名").Document("文档ID"); await docRef.SetAsync(new { Name = "测试数据", Value = 123 });
3. 访问实时数据库(RTDB)实例
你现有代码中配置的baseURL需要填入AppOptions的DatabaseUrl参数,初始化后调用FirebaseDatabase类获取实例:
AppOptions appOptions = new AppOptions() { Credential = GoogleCredential.FromFile("serviceAccountKey.json"), ProjectId = "你的Firebase控制台项目ID", DatabaseUrl = "https://你的RTDB名称.firebaseio.com/" // 对应你代码中的baseURL,注意要加https前缀 }; var firebaseApp = FirebaseApp.Create(appOptions); // 获取实时数据库实例 FirebaseDatabase rtdb = FirebaseDatabase.GetInstance(firebaseApp); // 操作示例:读取数据 DatabaseReference dbRef = rtdb.GetReference("sample-default-rtdb"); // 对应你代码中的表名 var snapshot = await dbRef.GetValueAsync(); var data = snapshot.Value;
内容的提问来源于stack exchange,提问作者DevdotHamza
相关产品推荐
相关产品推荐

