我正在尝试按照指南和帮助Firebase网站上有关Unity实时数据库设置的文章。不幸的是,我很难将数据同步或添加 - 由于某种原因,数据库无法识别我试图作为测试放入的数据。
以下是我必须设置的全部内容:
public static DatabaseManager instance = null;
public string userID;
public string userDisplayName;
private DatabaseReference dbReference;
private void Awake()
{
if (instance == null)
instance = this;
else if (instance != this)
Destroy(gameObject);
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("URLOfAppHere");
FirebaseApp.DefaultInstance.SetEditorP12FileName("AppFileHere.p12");
FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("account.gserviceaccount.com");
FirebaseApp.DefaultInstance.SetEditorP12Password("password");
FirebaseApp.DefaultInstance.SetEditorAuthUserId("1234");
dbReference = FirebaseDatabase.DefaultInstance.RootReference;
}
private void Start()
{
CreateDataEntry("Testing User", "1234");
}
public void CreateDataEntry(string _displayName, string _userID)
{
dbReference.Child("users").Child(_userID).SetValueAsync("test");
}
我目前在项目中设定的规则是:
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
但我也试过了默认的。不幸的是,两者都不起作用。然后我尝试将其设置为公开,但再次没有用。
任何想法会发生什么?
答案 0 :(得分:0)
您遇到的一个问题是您的editordatabaseurl未以网址格式指定。
退房: https://firebase.google.com/docs/database/unity/start#configuring_the_sdk_for_the_unity_editor
应该是:
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
您的服务帐户设置也看起来不对,因为" account.gserviceaccount.com"不是有效的电子邮件地址。我会抹掉" p12"您在代码中设置的设置,并为您的数据库打开public access以查看是否有效。然后,如果可行,请尝试按照here步骤设置服务帐户访问权限。
-------------- EDIT --------------------
好的,我刚才意识到你可能故意编辑了这些信息。 P12设置的另一个问题是您设置的服务帐户应该具有适当的权限(项目编辑器)。
...如果您设置了p12文件路径,Firebase将使用该服务帐户,即使您设置了公共访问权限也会失败。所以 - 完全删除任何p12值,并再次尝试使用公共访问权限删除p12配置。