数据库在使用Firebase的Unity编辑器中无法更新

时间:2017-03-29 11:27:48

标签: c# unity3d firebase firebase-realtime-database

我正在尝试按照指南和帮助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"
      }
    }
  }
}

但我也试过了默认的。不幸的是,两者都不起作用。然后我尝试将其设置为公开,但再次没有用。

任何想法会发生什么?

1 个答案:

答案 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配置。