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 進行身份驗證。

在你開始之前

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

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

    查找在這些初始設置步驟的詳細說明添加火力地堡到您的統一項目

  2. 獲取項目的服務器密鑰:
    1. 轉至服務帳戶在項目的設置頁面。
    2. 點擊在服務帳戶頁的火力地堡聯繫SDK部分底部的生成新的私鑰
    3. 新服務帳戶的公鑰/私鑰對會自動保存在您的計算機上。將此文件複製到您的身份驗證服務器。

使用 Firebase 進行身份驗證

FirebaseAuth類是所有API調用的網關。它通過為accessable FirebaseAuth.DefaultInstance
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

呼叫Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync從認證服務器與令牌。

  1. 當用戶登錄您的應用程序時,將他們的登錄憑據(例如,他們的用戶名和密碼)發送到您的身份驗證服務器。你的服務器檢查憑據,並返回一個自定義的令牌,如果它們是有效的。
  2. 您收到您的身份驗證服務器令牌自定義後,將其傳遞到Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync在用戶登錄:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync 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();