您可以通过将 Google Sign-In 集成到您的应用中,让您的用户使用他们的 Google 帐户向 Firebase 进行身份验证。
在你开始之前
在您可以使用Firebase 身份验证之前,您需要:
注册您的 Unity 项目并将其配置为使用 Firebase。
如果您的 Unity 项目已经使用 Firebase,那么它已经为 Firebase 注册和配置。
如果您没有 Unity 项目,可以下载示例应用程序。
将Firebase Unity SDK (特别是
FirebaseAuth.unitypackage
)添加到您的 Unity 项目中。
请注意,将 Firebase 添加到您的 Unity 项目涉及Firebase 控制台和打开的 Unity 项目中的任务(例如,您从控制台下载 Firebase 配置文件,然后将它们移动到您的 Unity 项目中)。
访问Firebase.Auth.FirebaseAuth
类
FirebaseAuth
类是所有 API 调用的网关。它可以通过FirebaseAuth.DefaultInstance访问。Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
使用 Firebase 进行身份验证
- 按照Android和iOS+的说明获取用于 Google 登录的 ID 令牌。
- 用户成功登录后,将访问令牌交换为 Firebase 凭据,并使用 Firebase 凭据向 Firebase 进行身份验证:
Firebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken); 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; }
在您的 Firebase 实时数据库和云存储安全规则中,您可以从
auth
变量中获取登录用户的唯一用户 ID,并使用它来控制用户可以访问哪些数据。
您可以通过将身份验证提供程序凭据链接到现有用户帐户来允许用户使用多个身份验证提供程序登录您的应用程序。
要注销用户,请调用SignOut()
:
auth.SignOut();