為 firebase 規則服務創建了 auth 函式并呼叫服務實體來創建 firebase 規則集,但它回傳 System.NullReferenceException: Object reference not set to an instance of an object。我在這里錯過了什么?
using Google.Apis.FirebaseRules.v1;
using Ruleset = Google.Apis.FirebaseRules.v1.Data.Ruleset;
using Source = Google.Apis.FirebaseRules.v1.Data.Source;
using File = Google.Apis.FirebaseRules.v1.Data.File;
private static FirebaseRulesService _firebaseRulesService;
public static void IntializeFirebaseRules() {
GoogleCredential credential = GoogleCredential.GetApplicationDefault();
if (CloudManager.Credential.IsCreateScopedRequired)
{
credential = CloudManager.Credential.CreateScoped(FirebaseRulesService.Scope.CloudPlatform);
}
_firebaseRulesService = new FirebaseRulesService(
new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = CloudManager.ApplicationName
});
}
public static async void AddRuleset()
{
Ruleset myRuleset = new Ruleset {
new Source {
Files = {
new File {
Name = "firestore.rules",
Content = "service cloud.firestore {"
"match /databases/{database}/documents {"
"match /users/{userId}{"
"allow read: if (request.auth.uid == userId);"
"}"
"match /licenses/{accountId} {"
"allow read: if isAccountOwner(accountId);"
"}"
"}"
"}",
}
}
};
};
_firebaseRulesService.Projects.Rulesets.Create(myRuleset , "projects/" CloudManager.ProjectId);
}
**編輯 -> 如下所示分隔物件,并且 NullReferenceException 發生在 Source mySource = new Source 行
File myFile = new File {
Name = "firestore.rules",
Content = "service cloud.firestore {"
"match /databases/{database}/documents {"
"match /users/{userId}{"
"allow read: if (request.auth.uid == userId);"
"}"
"function doc(subpath) {"
"return get(/databases/$(database)/documents/$(subpath)).data;"
"}"
"function isAccountOwner(accountId) {"
"return request.auth.uid == accountId"
"|| doc(/users/$(request.auth.uid)).accountId == accountId;"
"}"
"match /licenses/{accountId} {"
"allow read: if isAccountOwner(accountId);"
"}"
"}"
"}",
};
Source mySource = new Source {
Files = {
myFile
}
};
Ruleset myRuleset = new Ruleset {
Source = mySource
};
_firebaseRulesService.Projects.Rulesets.Create(myRuleset , "projects/" CloudManager.ProjectId);
uj5u.com熱心網友回復:
這個說法:
Source mySource = new Source {
Files = {
myFile
}
};
... 正在嘗試添加 myFile
到Files
集合中 - 但我懷疑您會發現默認情況下它是空的。您可以將其初始化為一個串列:
Source mySource = new Source { Files = new List<File> { myFile } };
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537338.html
標籤:Google Cloud Collective C#休息谷歌云平台火力安全