转到控制台

使用 GitHub 和 Unity 进行身份验证

您可以将 GitHub 身份验证机制集成到您的应用中,让您的用户可使用自己的 GitHub 帐号进行 Firebase 身份验证。

准备工作

在使用 Firebase 身份验证之前,您需要先完成以下步骤:

  • 注册 Unity 项目并将其配置为使用 Firebase。

    • 如果您的 Unity 项目已在使用 Firebase,那么您就已注册该 Unity 项目并已将其配置为使用 Firebase。

    • 如果您还没有 Unity 项目,可以下载一个示例应用

  • Firebase Unity SDK(具体而言是 FirebaseAuth.unitypackage)添加至您的 Unity 项目中。

请注意,将 Firebase 添加到 Unity 项目需要在 Firebase 控制台中和打开的 Unity 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移动到 Unity 项目中)。

访问 Firebase.Auth

FirebaseAuth 类是所有 API 调用都需要通过的一道“关卡”。它可以通过 FirebaseAuth.DefaultInstance 访问。
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

进行 Firebase 身份验证

  1. 分别按照适用于 AndroidiOS 的说明,为登录的 GitHub 用户获取令牌。
  2. 在用户成功登录之后,用访问令牌换取 Firebase 凭据,然后使用此 Firebase 凭据进行 Firebase 身份验证:
    Firebase.Auth.Credential credential =
        Firebase.Auth.GitHubAuthProvider.GetCredential(accessToken);
    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 实时数据库和 Cloud Storage 安全规则中,您可以从 auth 变量获取已登录用户的唯一用户 ID,然后利用此 ID 来控制用户可以访问哪些数据。

您可以通过将身份验证提供方凭据关联至现有用户帐号,让用户可以使用多个身份验证提供方登录您的应用。

要让用户退出帐号,请调用 SignOut()

auth.SignOut();