【问题标题】:Database won't update in Unity Editor with Firebase使用 Firebase 的 Unity 编辑器中的数据库不会更新
【发布时间】:2017-03-29 11:27:48
【问题描述】:

我正在尝试遵循 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"
      }
    }
  }
}

但我也尝试了默认的。不幸的是,这两种方法都不起作用。然后我尝试将其设置为公开,但还是没有用。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    您遇到的一个问题是您的 editordatabaseurl 未以 url 形式指定。

    查看: 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 设置服务帐户访问权限。

    -------------编辑--------

    好的,我刚刚意识到您可能故意编辑了该信息。 P12 设置的另一个问题是您设置的服务帐户应具有适当的权限(项目编辑器)。

    ...如果您设置了 p12 文件路径,即使您设置了公共访问权限,Firebase 也会使用服务帐户并失败。所以 - 完全删除任何 p12 值,并再次尝试使用公共访问权限来删除 p12 配置。

    【讨论】:

    • “好的,我刚刚意识到你可能故意修改了该信息。”是的,起初我没有,我不得不编辑信息。它看起来就像文章中的格式。 “P12 设置的另一个问题是您设置的服务帐户应具有适当的权限(项目编辑器)。”我可以作为编辑者从 IAM 菜单更改其权限吗?因为我根本没有选择使用权限或它。 p12的文件路径是什么意思?我没有放文件路径,只是文件名末尾带有“.p12”。
    • 我的意思是注释掉“FirebaseApp.DefaultInstance.SetEditorP12FileName”这一行并打开公共访问。如果这行得通,您知道这可能是由于服务帐户设置错误造成的。
    • 感谢您的解释。我就是这样做的,公共账户就可以工作。似乎测试帐户无法正常工作。也就是说,我按照this guide 中的步骤操作,有什么想法可能出了什么问题吗?我什至给了帐户编辑权限(要求所有者这样做)。这会干扰正常登录吗?还是只是服务帐户?无论如何要修复帐户?还是我创建一个新的?非常感谢您的帮助。
    • 尽量不要调用 SetEditorAuthUserId。如果设置,firebase 将尝试模仿该用户及其限制。还要仔细检查您的 p12 密码(默认为“notasecret”)
    • @Oli 据我记得,Unity 编辑器无法做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多