Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

使用基於密碼的帳戶使用 Unity 進行 Firebase 身份驗證

您可以使用 Firebase 身份驗證讓您的用戶使用他們的電子郵件地址和密碼向 Firebase 進行身份驗證,並管理您應用的基於密碼的帳戶。

在你開始之前

之前,你可以用火力地堡認證,您需要:

  • 註冊您的 Unity 項目並將其配置為使用 Firebase。

    • 如果您的 Unity 項目已經使用 Firebase,那麼它已經為 Firebase 註冊和配置。

    • 如果你沒有一個統一的項目,你可以下載一個示例應用程序

  • 添加火力地堡統一SDK (具體FirebaseAuth.unitypackage )到您的統一項目。

注意添加火力地堡到您的統一項目涉及雙方的任務火力地堡控制台並在打開的統一的項目(例如,您從控制台下載火力地堡的配置文件,然後將其移動到您的統一項目)。

進入Firebase.Auth.FirebaseAuth

FirebaseAuth類是所有API調用的網關。它通過為accessable 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;
    }
    
  • 在你的火力地堡實時數據庫和雲存儲安全規則,你可以得到簽署的,從用戶的唯一的用戶ID auth的變量,並用它來控制哪些數據的用戶可以訪問。

您可以允許用戶通過使用多個身份驗證提供登錄到您的應用程序連接身份驗證提供憑據到現有的用戶帳戶。

要註銷用戶,調用SignOut()

auth.SignOut();