使用自訂驗證系統和 Unity 進行 Firebase 驗證
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
您可以透過以下方式整合 Firebase Authentication 與自訂驗證系統:
修改您的驗證伺服器,以便在使用者
才能成功登入應用程式接收這個權杖,並使用該權杖進行驗證
掌握實用知識
事前準備
-
使用前
Firebase Authentication、
請完成下列操作:
- 在 Firebase 專案中註冊 Unity 專案。
- 新增 Firebase Unity SDK (具體來說
FirebaseAuth.unitypackage
) 附加至 Unity 專案。
如需這些初始設定步驟的詳細操作說明,請前往
將 Firebase 新增至您的 Unity 中
專案。
- 取得專案的伺服器金鑰:
- 前往服務帳戶頁面
頁面設定
- 按一下底部的「產生新私密金鑰」。
「服務帳戶」頁面的「Firebase Admin SDK」區段。
- 系統會自動建立新的服務帳戶的公開/私密金鑰組
就會儲存到您的電腦中。將此檔案複製到您的驗證伺服器。
透過 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 專案的一部分,可用來識別
即可限制使用者登入專案中的所有應用程式
您可以讓使用者透過多重驗證機制登入您的應用程式
將驗證供應商憑證連結至
現有的使用者帳戶
如要登出使用者,請呼叫
SignOut()
:
auth.SignOut();
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-08 (世界標準時間)。
[null,null,["上次更新時間:2025-08-08 (世界標準時間)。"],[],[],null,["You can integrate Firebase Authentication with a custom authentication system by\nmodifying your authentication server to produce custom signed tokens when a user\nsuccessfully signs in. Your app receives this token and uses it to authenticate\nwith Firebase.\n\nBefore you begin\n\n1. Before you can use\n [Firebase Authentication](/docs/reference/unity/namespace/firebase/auth),\n you need to:\n\n \u003cbr /\u003e\n\n \u003cbr /\u003e\n\n - Register your Unity project with your Firebase project.\n - Add the [Firebase Unity SDK](/download/unity) (specifically, `FirebaseAuth.unitypackage`) to your Unity project.\n\n \u003cbr /\u003e\n\n \u003cbr /\u003e\n\n **Find detailed instructions for these initial setup steps in\n [Add Firebase to your Unity\n project](/docs/unity/setup#set_up_environment).**\n2. Get your project's server keys:\n 1. Go to the [Service Accounts](https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk) page in your project's settings.\n 2. Click *Generate New Private Key* at the bottom of the *Firebase Admin SDK* section of the *Service Accounts* page.\n 3. The new service account's public/private key pair is automatically saved on your computer. Copy this file to your authentication server.\n\nAuthenticate with Firebase The `FirebaseAuth` class is the gateway for all API calls. It is accessible through [FirebaseAuth.DefaultInstance](/docs/reference/unity/class/firebase/auth/firebase-auth#defaultinstance). \n\n```c#\nFirebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;\n```\n\nCall `Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync` with the token from\nyour authentication server.\n\n1. When users sign in to your app, send their sign-in credentials (for example, their username and password) to your authentication server. Your server checks the credentials and returns a [custom token](/docs/auth/admin/create-custom-tokens) if they are valid.\n2. After you receive the custom token from your authentication server, pass it to `Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync` to sign in the user: \n\n ```c#\n auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task =\u003e {\n if (task.IsCanceled) {\n Debug.LogError(\"SignInWithCustomTokenAsync was canceled.\");\n return;\n }\n if (task.IsFaulted) {\n Debug.LogError(\"SignInWithCustomTokenAsync encountered an error: \" + task.Exception);\n return;\n }\n\n Firebase.Auth.AuthResult result = task.Result;\n Debug.LogFormat(\"User signed in successfully: {0} ({1})\",\n result.User.DisplayName, result.User.UserId);\n });\n ```\n\nNext steps\n\nAfter a user signs in for the first time, a new user account is created and\nlinked to the credentials---that is, the user name and password, phone\nnumber, or auth provider information---the user signed in with. This new\naccount is stored as part of your Firebase project, and can be used to identify\na user across every app in your project, regardless of how the user signs in.\n\n- In your apps, you can get the user's basic profile information from the\n [`Firebase.Auth.FirebaseUser`](/docs/reference/unity/class/firebase/auth/firebase-user) object:\n\n ```c#\n Firebase.Auth.FirebaseUser user = auth.CurrentUser;\n if (user != null) {\n string name = user.DisplayName;\n string email = user.Email;\n System.Uri photo_url = user.PhotoUrl;\n // The user's Id, unique to the Firebase project.\n // Do NOT use this value to authenticate with your backend server, if you\n // have one; use User.TokenAsync() instead.\n string uid = user.UserId;\n }\n ```\n- In your Firebase Realtime Database and Cloud Storage\n [Security Rules](/docs/database/security/user-security), you can\n get the signed-in user's unique user ID from the `auth` variable,\n and use it to control what data a user can access.\n\nYou can allow users to sign in to your app using multiple authentication\nproviders by [linking auth provider credentials to an\nexisting user account.](/docs/auth/unity/account-linking)\n\nTo sign out a user, call [`SignOut()`](/docs/reference/unity/class/firebase/auth/firebase-auth#signout): \n\n```c#\nauth.SignOut();\n```"]]