您可以使用 Firebase 身份验证来创建和使用临时匿名帐户以通过 Firebase 进行身份验证。这些临时匿名帐户可用于允许尚未注册您的应用程序的用户使用受安全规则保护的数据。如果匿名用户决定注册您的应用程序,您可以将他们的登录凭据链接到匿名帐户,以便他们可以在以后的会话中继续使用其受保护的数据。
在你开始之前
在使用Firebase Authentication之前,您需要将Firebase Unity SDK (特别是
FirebaseAuth.unitypackage
)添加到您的 Unity 项目中。在将 Firebase 添加到您的 Unity 项目中找到有关这些初始设置步骤的详细说明。
- 如果您尚未将您的应用程序连接到您的 Firebase 项目,请从Firebase 控制台执行此操作。
- 启用匿名身份验证:
- 在Firebase 控制台中,打开Auth部分。
- 在登录方法页面上,启用匿名登录方法。
- 可选:如果您已将项目升级到Firebase Authentication with Identity Platform ,则可以启用自动清理。当您启用此设置时,超过 30 天的匿名帐户将被自动删除。在启用了自动清理的项目中,匿名身份验证将不再计入使用限制或计费配额。请参阅自动清理。
匿名使用 Firebase 进行身份验证
当已注销的用户使用需要通过 Firebase 进行身份验证的应用程序功能时,请通过完成以下步骤匿名登录用户:
FirebaseAuth
类是所有 API 调用的网关。它可以通过FirebaseAuth.DefaultInstance访问。Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;1. 调用
Firebase.Auth.FirebaseAuth.SignInAnonymouslyAsync
。auth.SignInAnonymouslyAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAnonymouslyAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception); return; } Firebase.Auth.FirebaseUser newUser = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId); });
将匿名帐户转换为永久帐户
当匿名用户注册您的应用程序时,您可能希望允许他们使用他们的新帐户继续他们的工作——例如,您可能希望让用户在他们注册之前添加到他们的购物车中的项目在他们的新帐户中可用帐户的购物车。为此,请完成以下步骤:
- 当用户注册时,完成用户身份验证提供程序的登录流程,直到但不包括调用
Firebase.Auth.FirebaseAuth.SignInWithCredentialAsync
方法之一。例如,获取用户的 Google ID 令牌、Facebook 访问令牌或电子邮件地址和密码。 为新的身份验证提供商获取
Firebase.Auth.Credential
:将
Firebase.Auth.Credential
对象传递给登录用户的LinkWithCredentialAsync
方法:
如果对LinkWithCredentialAsync
的调用成功,则用户的新帐户可以访问匿名帐户的 Firebase 数据。
自动清理
如果您已将项目升级到Firebase Authentication with Identity Platform ,则可以在 Firebase 控制台中启用自动清理。当您启用此功能时,您允许 Firebase 自动删除超过 30 天的匿名帐户。在启用了自动清理的项目中,匿名身份验证将不计入使用限制或计费配额。
- 启用自动清理后创建的任何匿名帐户可能会在创建后 30 天后随时自动删除。
- 在启用自动清理之前创建的匿名帐户将有资格在启用自动清理后 30 天后自动删除。
- 如果您关闭自动清理,任何计划删除的匿名帐户将保持计划删除。这些帐户不计入使用限制或计费配额。
- 如果您通过将匿名帐户链接到任何登录方法来“升级”该帐户,该帐户将不会被自动删除。
如果您想在启用此功能之前查看有多少用户会受到影响,并且您已将项目升级到Firebase Authentication with Identity Platform ,则可以在Cloud Logging中按is_anon
进行过滤。
下一步
现在用户可以使用 Firebase 进行身份验证,您可以使用Firebase 规则控制他们对 Firebase 数据库中数据的访问。