首页 > 解决方案 > Unity Firebase 自动创建匿名帐户

问题描述

在这里寻求一些想法。当有人第一次启动我的手机游戏时,我宁愿他们先进入游戏,而不必担心“注册”。

我认为这提供了更好的用户体验,因为您可以立即进入游戏。Firebase 支持匿名帐户并保存匿名帐户的进度,这些帐户稍后可以转换为实际帐户(例如,将他们的 google 或 facebook 帐户链接到他们的匿名帐户),同时保留他们的游戏进度。

有没有人对这种方法有任何想法,或者强制用户在应用程序启动时决定在创建匿名帐户或使用谷歌/脸书/电子邮件/等注册之间做出选择是否更好?

干杯凯文

标签: firebaseunity3dfirebase-authentication

解决方案


这实际上与它经常向使用 Firebase 的 Web 开发人员推销的用例非常相似:对于购物应用程序,您通常会让开发人员完成购物流程并完成结帐。结帐完成后,您然后将他们的帐户“提升”为完整帐户,这样您就不会在关键流程中将客户拒之门外。

对于一款游戏,我不仅喜欢这种匿名帐户流程(现在玩,然后“升级”以获得您需要的任何社交功能),而且我认为您可以获得一个非常酷的自然流程。例如,如果您正在玩井字游戏,您可以使用动态链接来邀请您的朋友与您对战。此链接通常会在应用程序安装过程中持续存在(iOS 和 Android,尽管在 iOS 上有点不稳定),因此您邀请的玩家可以直接进入您正在玩的游戏,使用匿名身份验证无缝创建帐户。

但是,您需要考虑两个因素:

  1. 如果您将实时数据库与匿名帐户配对,您仍在存储用户数据。我不是律师,但如果您所在地区有严格的隐私法规,您会想和律师谈谈。

  2. 将匿名帐户合并到“完整”帐户过程中确实有一些重要的边缘情况。如果玩家已经拥有完整帐户,您会怎么做(显然,您必须合并数据。但您必须手动完成,因为 Firebase 没有与游戏无关的方式为您完成)?如果在您推广帐户时其他用户声明了相同的电子邮件地址,您会怎么做(您需要扔掉一个,并且有规则可以解决哪个对名称有更强的声明)?

Firebase auth SDK的当前架构也有点复杂。所有 C# 对象都是指向 C++ 对象的指针。“当前用户”的绑定方式是它引用 C++ 端代表用户数据的全局单例。这有一个不幸的副作用,如果用户在“升级”帐户时错误地输入了他们的凭据(通常表现为必须重新输入用户名/密码和可能会丢失缓存的数据)。正在积极跟踪此错误(我相信这是此错误的副作用),但在短期内,这只是意味着您可能想要一种重新上传本地数据的好方法(假设您一旦删除匿名帐户就会失去对 DB 节点的访问权限),或者您希望避免持久化在将玩家迁移到“完整”帐户之前的任何用户特定数据(无论如何,我可能会考虑当前的隐私法规)。


推荐阅读