Google 致力于为黑人社区推动种族平等。查看具体举措

使用 Unity 使用基于密码的帐户向 Firebase 进行身份验证

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以使用 Firebase 身份验证让您的用户使用他们的电子邮件地址和密码通过 Firebase 进行身份验证,并管理您应用的基于密码的帐户。

在你开始之前

在您可以使用Firebase 身份验证之前,您需要:

  • 注册您的 Unity 项目并将其配置为使用 Firebase。

    • 如果您的 Unity 项目已经使用 Firebase,那么它已经为 Firebase 注册和配置。

    • 如果您没有 Unity 项目,可以下载示例应用程序

  • Firebase Unity SDK (特别是FirebaseAuth.unitypackage )添加到您的 Unity 项目中。

请注意,将 Firebase 添加到您的 Unity 项目涉及Firebase 控制台和打开的 Unity 项目中的任务(例如,您从控制台下载 Firebase 配置文件,然后将它们移动到您的 Unity 项目中)。

访问Firebase.Auth.FirebaseAuth

FirebaseAuth类是所有 API 调用的网关。它可以通过FirebaseAuth.DefaultInstance访问。
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

创建基于密码的帐户

要使用密码创建新用户帐户,请在应用的登录代码中完成以下步骤:

  1. 当新用户使用您的应用程序的注册表单进行注册时,请完成您的应用程序所需的任何新帐户验证步骤,例如验证新帐户的密码是否正确输入并满足您的复杂性要求。
  2. 通过将新用户的电子邮件地址和密码传递给FirebaseAuth.CreateUserWithEmailAndPassword来创建一个新帐户:
    auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
        return;
      }
    
      // Firebase user has been created.
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("Firebase user created successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

使用电子邮件地址和密码登录用户

使用密码登录用户的步骤与创建新帐户的步骤类似。在您应用的登录功能中,执行以下操作:

  1. 当用户登录您的应用时,将用户的电子邮件地址和密码传递给FirebaseAuth.SignInWithEmailAndPassword
    auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    
  2. 您还可以像其他工作流程一样创建凭据并登录:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync 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 项目的一部分存储,可用于在项目中的每个应用中识别用户,无论用户如何登录。

  • 在您的应用中,您可以从Firebase.Auth.FirebaseUser对象获取用户的基本个人资料信息:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • 在您的 Firebase 实时数据库和云存储安全规则中,您可以从auth变量中获取登录用户的唯一用户 ID,并使用它来控制用户可以访问哪些数据。

您可以通过将身份验证提供程序凭据链接到现有用户帐户来允许用户使用多个身份验证提供程序登录您的应用程序。

要注销用户,请调用SignOut()

auth.SignOut();