Firestore C#:权限丢失或不足
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firestore C#:权限丢失或不足相关的知识,希望对你有一定的参考价值。
我目前正在使用C#浏览Firebase的Cloud Firestore,并遇到了在搜索SO后无法解决的错误。似乎C#中Firestore的资源非常有限:
"Status(StatusCode=PermissionDenied, Detail="Missing or insufficient permissions.")"
我的代码到目前为止:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "FirebaseCsharpTest.json");
string project = "MyProjectId";
FirestoreDb db = FirestoreDb.Create(project);
Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
AddPerson(db).GetAwaiter().GetResult();
}
public static async Task AddPerson(FirestoreDb db)
{
CollectionReference collection = db.Collection("users");
DocumentReference document = await collection.AddAsync(new
{
Name = new
{ First = "Ada", Last = "Lovelace" },
Born = 1815
});
}
}
我已在Firebase控制台上检查了Firestore安全规则是否已设置为public(截至目前为止,为了测试)。我还确保认证json
文件是从Google Developer Console生成的正确文件,如此post中所建议的。
有什么我想念的吗?
答案
这是云IAM问题,而不是安全规则问题。 The C# server client library creates a privileged server environment that doesn't take into account Cloud Firestore security rules.。似乎您的密钥文件的服务帐户没有正确的IAM角色,或者您的代码没有找到您的密钥文件。
尝试使用密钥文件的完整路径而不是相对路径。
您还可以尝试设置here所述的新服务帐户和密钥文件。
另外,请确保您要更改project
变量:
string project = "NewFirebaseCsharpTest";
FirestoreDb db = FirestoreDb.Create(project);
以上是关于Firestore C#:权限丢失或不足的主要内容,如果未能解决你的问题,请参考以下文章
使用访问规则中的字段写入 Firestore 时缺少权限或权限不足
Firebase 身份验证正在运行,但 Firestore 以缺少权限或权限不足为由拒绝请求