首页 > 解决方案 > Firebase 在移动设备上登录失败

问题描述

我有一个统一的应用程序。我可以在我的电脑上登录到 firebase,当我创建一个 .exe 时,但是当我生成一个 apk 时,登录失败。我应该配置其他东西吗?

我的剧本

void Start()
{
    auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
}

public void Login()
{
    string email = inputFieldEmail.text;
    string password = inputFieldPassword.text;

    auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
        if (task.IsCanceled)
        {
            Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
            return;
        }
        if (task.IsFaulted)
        {
            Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
            return;
        }

        Firebase.Auth.FirebaseUser newUser = task.Result;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            newUser.DisplayName, newUser.UserId);
        GameManager.instance.SetNombre(email.Split('@')[0]);
        signedIn = true;
    });
}

标签: c#firebaseunity3dfirebase-authentication

解决方案


有关该代码的一些简短建议,请尝试替换ContinueWithContinueWithOnMainThread. 这将使调试代码更容易,并避免 Unity 中任何与线程相关的问题(特别是,你GameManager.instance.SetNombre让我感到紧张)。这是替代品的下降。

要在 Android 上进行身份验证,您需要三件事:

  1. 一个 google-services.json 文件(如果你注册了一个 iOS 应用程序,你就有可能拥有一个 GoogleService-Info.plist)。从帮助网站
  1. 获取 Android 应用的配置文件 转到 Firebase 控制台中的项目设置。
  2. 在您的应用程序卡中,选择您需要配置文件的应用程序的包名称。
  3. 单击 google-services.json。
  4. 将您的配置文件移动到应用程序的模块(应用程序级)目录中。确保您的应用中只有这个最近下载的配置文件。

(注意 Unity 中的第 4 步 - 只需将其放在 Assets/ 目录中的某个位置)

  1. 确保您已在 Firebase 控制台中启用分析。听起来你已经这样做了。

  2. 将您的 SHA-1 添加到 Firebase。这是基于签名密钥的,因此每个开发人员可能需要注册他们的本地开发 SHA-1,并且您需要注册最终的签名密钥。从帮助网站

如果您最初没有为您的 Firebase Android 应用提供 SHA 证书指纹,或者如果您需要添加一个额外的指纹,请按照以下步骤操作。

  1. 确保您拥有签名证书的 SHA 指纹。
  2. 在您的项目设置中,转到您的应用卡。
  3. 选择要添加 SHA 指纹的 Firebase Android 应用。
  4. 单击添加指纹。
  5. 输入或粘贴 SHA 指纹,然后单击保存。

获取您的开发 SHA-1 密钥,请大致输入以下命令:

keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

如果你不能运行 keytool 命令,我写了这个简短的解释器。您可以在您的 JDK 目录中找到它(如果您正在构建 Android 版本,那么您在某处有一个 JDK)。


推荐阅读