将 Firebase Admin SDK 添加到 Unity 项目

Posted

技术标签:

【中文标题】将 Firebase Admin SDK 添加到 Unity 项目【英文标题】:Adding Firebase Admin SDK to Unity project 【发布时间】:2020-11-27 08:43:43 【问题描述】:

我是 Unity 和 C# 的新手(C# 和所有 .NET 东西的真正菜鸟),我想在我的 Unity 项目中使用 Firebase 实时数据库。 我按照Firebase docs 上的说明进行设置,但是在我创建了一个新的 p12 文件并将this code 添加到我的项目之后

  void Start() 
    // Set these values before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
    FirebaseApp.DefaultInstance.SetEditorP12FileName("YOUR-FIREBASE-APP-P12.p12");
    FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("SERVICE-ACCOUNT-ID@YOUR-FIREBASE-APP.iam.gserviceaccount.com");
    FirebaseApp.DefaultInstance.SetEditorP12Password("notasecret");
  

我得到以下提示:

方法“Firebase.Unity.Editor.FirebaseEditorExtensions.SetEditorP12FileName”已过时:不再支持编辑器中的服务帐户。请改用标准登录方法,例如。 FirebaseAuth.SignInWithEmailAndPasswordAsync()

这把我带到了Firebase Deprecated 页面,上面写着:

现在我不知道如何将 Admin SDK 添加到我的 Unity 项目中。我只能找到 references 关于如何将 Admin SDK 添加到服务器的信息。但是如何将 Admin SDK 添加到 Unity 项目中?

【问题讨论】:

【参考方案1】:

我给 Firebase 支持部门写了一封邮件,甚至在 Firebase 社区 Slack 频道和 reference 上写了关于如何将 Admin SDK 添加到服务器的文章,这似乎也是统一项目的方式。

这是我所做的(以防有人想节省一些时间):

    我为 Unity 安装了 NuGet 插件,然后搜索了 Firebase Admin SDK(当然也安装了 SDK) 我按照here的说明将代码sn-p复制到我的项目中:
FirebaseApp.Create(new AppOptions()

    Credential = GoogleCredential.GetApplicationDefault(),
);

重要:复制代码 sn -p 并导入依赖项后,我的 IDE 导入了 Firebase 包而不是 FirebaseAdmin 包,这当然不起作用,参数@ 987654327@ 无法作为 AppOptions 的一部分找到。所以一定要使用正确的依赖。

【讨论】:

【参考方案2】:

如果您想从统一编辑器写入某些您不允许普通用户使用的数据库位置,您可以解决使用 firebase 规则并设置“密码”。

在您的统一脚本中,将密码条目添加到您将要通过dict.Add("passkey", "12345"); 上传的数据(假设它们由字典dict 表示)。此外,将分配密钥值的代码放在仅在统一编辑器中编译的条件块中:#if UNITY_EDITOR,这样它就不会进入您的应用程序。

在您的规则中,在相关位置设置写入条件为".read": false, ".write": "newData.child('passkey').val() === '12345'"

但是,我不保证这是一种好的做法。

【讨论】:

以上是关于将 Firebase Admin SDK 添加到 Unity 项目的主要内容,如果未能解决你的问题,请参考以下文章

无法获取使用Admin SDK Firebase的用户列表

如何使用 firebase admin sdk 列出所有用户

Firebase Admin SDK、FCM 云消息传递

如何以BLOB格式将图像上传到Firebase存储?

如何将 firebase 的 firestore/admin sdk 与 next.js 一起使用

Firebase Cloud Messaging:Firebase Admin SDK 中的设备组发送支持