Firestore C #: отсутствует или недостаточно разрешений - PullRequest
0 голосов
/ 23 апреля 2019

Я в настоящее время изучаю Firebase Cloud Firestore в C # и столкнулся с ошибкой, которую я не смог устранить после поиска SO. Похоже, что ресурсы для Firestore в C # довольно ограничены:

"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 установлены на общедоступные (на данный момент, для тестирования). Я также гарантировал, что файл аутентификации json является правильным файлом, созданным из консоли разработчика Google, как предложено в этом посте .

Есть что-то, что я пропускаю?

EDIT: Мои разрешения на облачной консоли Google: enter image description here

1 Ответ

0 голосов
/ 23 апреля 2019

Это проблема облачного IAM, а не правила безопасности. Клиентская библиотека сервера C # создает привилегированную серверную среду, которая не учитывает правила безопасности Cloud Firestore. .Похоже, что либо учетная запись службы файла ключей не имеет правильной роли IAM, либо ваш код не находит ваш файл ключа.

Попробуйте использовать полный путь к файлу ключа вместо относительного пути.

Вы также можете попробовать настроить новую учетную запись службы и файл ключа, как описано здесь .

Также убедитесь, что вы меняете переменную project:

string project = "NewFirebaseCsharpTest";

FirestoreDb db = FirestoreDb.Create(project);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...