在你开始之前
在您可以使用Firebase 身份验证之前,您需要:
- 将您的 Unity 项目注册到您的 Firebase 项目。
- 将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.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();