您可以修改驗證伺服器,在使用者成功登入時產生自訂簽署的權杖,藉此將 Firebase Authentication 與自訂驗證系統整合。應用程式會收到這個權杖,並用來向 Firebase 進行驗證。
事前準備
-
如要使用 Firebase Authentication, 請先完成下列步驟:
- 向 Firebase 專案註冊 Unity 專案。
- 將 Firebase Unity SDK (具體來說是
FirebaseAuth.unitypackage) 新增至 Unity 專案。
如需這些初始設定步驟的詳細操作說明,請參閱「將 Firebase 新增至您的 Unity 專案」一文。
- 取得專案的伺服器金鑰:
-
在 Firebase 控制台中,依序前往「
設定 」>「服務帳戶」分頁。 - 在「Firebase Admin SDK」部分底部,按一下「Generate New Private Key」。
- 系統會自動將新服務帳戶的公開/私密金鑰組儲存至您的電腦。將這個檔案複製到驗證伺服器。
-
在 Firebase 控制台中,依序前往「
使用 Firebase 進行驗證
FirebaseAuth 類別是所有 API 呼叫的閘道。
可透過 FirebaseAuth.DefaultInstance 存取。
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
使用驗證伺服器的權杖呼叫 Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync。
- 使用者登入應用程式時,請將登入憑證 (例如使用者名稱和密碼) 傳送至驗證伺服器。伺服器會檢查憑證,如果有效,則傳回自訂權杖。
- 從驗證伺服器收到自訂權杖後,請將該權杖傳遞至
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.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.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 Realtime Database 和 Cloud Storage 安全規則中,您可以從
auth變數取得已登入使用者的專屬使用者 ID, 並使用該 ID 控制使用者可存取的資料。
您可以將驗證供應商憑證連結至現有使用者帳戶,允許使用者透過多個驗證供應商登入應用程式。
如要登出使用者,請呼叫
SignOut():
auth.SignOut();