使用 Unity 匿名进行 Firebase 身份验证

您可以用 Firebase 身份验证功能创建和使用临时匿名帐号来进行 Firebase 身份验证。借助这些临时匿名帐号,尚未注册您应用的用户也可以处理受安全规则保护的数据。如果匿名用户决定注册您的应用,您可以将其登录凭据与其匿名帐号关联,这样他们就可以在以后的会话中继续处理其受保护的数据了。

准备工作

    您必须先创建一个 Firebase 项目,并将 Firebase Unity SDK 软件包添加到您的 Unity 项目中,然后才能使用 Firebase 身份验证

    设置:

    前提条件

    Android

    • Unity 5.0 或更高版本
    • Android NDK 版本 10d 或更高版本

    iOS

    • Unity 5.0 或更高版本
    • Xcode 8.0 或更高版本

    如果您还没有 Unity 项目,可以下载一个快速入门示例,试用一下特定的 Firebase 功能。如果使用快速入门示例,请不要忘记从项目设置中获取软件包标识符,下一步中会用到该标识符。

    在 Firebase 控制台中设置您的应用

    要将 Firebase 添加到您的应用,您需要有一个 Firebase 项目以及适用于您的应用的 Firebase 配置文件。

    要创建 Firebase 项目:

    1. 如果您还没有 Firebase 项目,请在 Firebase 控制台中创建一个。点击添加项目。如果您已经有与自己的移动应用相关联的现有 Google 项目,请从项目名称下拉菜单中选择该项目。否则,请输入项目名称以创建新项目。
    2. 可选:修改您的项目 ID。系统会自动为您的项目指定唯一 ID,此 ID 将用在公开显示的 Firebase 功能(例如数据库网址)以及您的 Firebase 托管子域名中。如果您想使用特定子域名,现在就可以更改此 ID。
    3. 执行其余的设置步骤,然后点击创建项目(如果您使用现有的项目,则点击添加 Firebase),开始为您的项目配置资源。这通常需要几分钟的时间。此过程完成后,您就会看到项目概览。

    Android

    1. 点击将 Firebase 添加到您的 Android 应用,然后按设置步骤操作。如果您是导入现有 Google 项目,系统可能会自动执行这些操作,您只需下载配置文件即可。
    2. 出现提示时,输入应用的软件包名称。请务必输入应用在使用的软件包名称;只有在将应用添加到 Firebase 项目时您才能进行此设置。
    3. 在此过程中,您要下载一个 google-services.json 文件。您可以随时重新下载此文件
    4. 添加初始化代码后,运行您的应用以便向 Firebase 控制台发送验证信息,证明您已成功安装 Firebase。

    iOS

    1. 点击将 Firebase 添加到您的 iOS 应用,然后按设置步骤操作。如果您是导入现有 Google 项目,系统可能会自动执行这些操作,您只需下载配置文件即可。
    2. 出现提示时,输入应用的软件包 ID。请务必输入应用在使用的软件包 ID;只有在将应用添加到 Firebase 项目时您才能进行此设置。
    3. 在此过程中,您要下载 GoogleService-Info.plist 文件。您可以随时重新下载此文件
    4. 添加初始化代码后,运行您的应用以便向 Firebase 控制台发送验证信息,证明您已成功安装 Firebase。
    5. 将从 Firebase 控制台下载的 GoogleService-Info.plist 拖动到 Unity 项目中的任意文件夹内。

    将 Firebase Unity SDK 添加到您的应用

    1. 下载 Firebase Unity SDK
    2. 依次选择 Assets > Import Package > Custom Package 菜单项。
    3. 从之前下载的 Firebase Unity SDK 导入 FirebaseAuth.unitypackage 软件包。
    4. 当出现 Import Unity Package 窗口时,点击 Import 按钮。

    初始化 SDK

    Android 版 Firebase Unity SDK 需要使用 Google Play 服务。必须先将 Google Play 服务更新为最新版本,然后才能使用该 SDK。您应在应用开头处添加以下代码,以便检查 Google Play 服务版本是否符合 Firebase Unity SDK 的要求,并视情况将其更新为相应版本,然后再调用 SDK 中的任何其他方法。

    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
      var dependencyStatus = task.Result;
      if (dependencyStatus == Firebase.DependencyStatus.Available) {
        // Set a flag here indiciating that Firebase is ready to use by your
        // application.
      } else {
        UnityEngine.Debug.LogError(System.String.Format(
          "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
        // Firebase Unity SDK is not safe to use here.
      }
    });
    

    构建您的应用

    Android

    1. 依次选择 File > Build Settings 菜单选项。
    2. 选择 Platform 列表中的 Android
    3. 点击 Switch Platform,选择 Android 作为目标平台。
    4. 等待 Unity 状态栏右下角的旋转进度条(正在构建)图标停止旋转。
    5. 点击 Build and Run

    iOS

    1. 依次选择 File > Build Settings 菜单选项。
    2. 选择 Platform 列表中的 iOS
    3. 点击 Switch Platform,选择 iOS 作为目标平台。
    4. 等待 Unity 状态栏右下角的旋转进度条(正在构建)图标停止旋转。
    5. 点击 Build and Run

  • 如果您尚未将应用关联到您的 Firebase 项目,请通过 Firebase 控制台进行关联。
  • 启用匿名身份验证:
    1. Firebase 控制台中,打开 Authentication(身份验证)部分。
    2. 登录方法页面中,启用匿名登录方法。
  • 匿名进行 Firebase 身份验证

    要使未登录的用户能够使用那些需要进行 Firebase 身份验证的应用功能,您可以按以下步骤操作,让用户匿名登录:

    FirebaseAuth 类是所有 API 调用都需要通过的一道“关卡”。 此类可通过 FirebaseAuth.DefaultInstance 访问。
    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    
    1. 调用 Firebase.Auth.FirebaseAuth.SignInAnonymouslyAsync
    auth.SignInAnonymouslyAsync().ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAnonymouslyAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

    将匿名帐号转成永久帐号

    当匿名用户注册您的应用时,您可能需要允许其使用新帐号继续之前的操作。例如,您可能需要将用户在注册之前添加到购物车中的商品移到其新帐号的购物车中。为此,请完成以下步骤:

    1. 当用户注册时,按照用户身份验证提供方的登录流程逐步进行,直到需要调用某一方法时停止。调用的例子包括:获取用户的 Google ID 令牌、Facebook 访问令牌或者电子邮件地址和密码。
    2. 为新的身份验证提供方获取 AuthCredential:

    3. 将 AuthCredential 对象传递给登录用户的 linkWithCredential 方法:

    如果调用成功,用户的新帐号就可以使用匿名帐号的 Firebase 数据了。

    后续步骤

    至此,用户可以进行 Firebase 身份验证,而您也可以使用 Firebase 规则控制用户对您 Firebase 数据库中的数据的访问权限。

    发送以下问题的反馈:

    此网页
    需要帮助?请访问我们的支持页面