Сбой входа в Firebase на мобильном устройстве

#c# #firebase #unity3d #firebase-authentication

#c# #firebase #unity3d #firebase-аутентификация

Вопрос:

У меня есть приложение в Unity. Я могу войти в 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.Resu<
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            newUser.DisplayName, newUser.UserId);
        GameManager.instance.SetNombre(email.Split('@')[0]);
        signedIn = true;
    });
}
  

Ответ №1:

Да, вы должны настроить на своей консоли Firebase ключи вашего мобильного устройства. Также помните, что Firebase в настоящее время работает с API 16 .

Дополнительная информация здесь:https://firebase.google.com/docs/unity/setup

Комментарии:

1. Я изменил свой вопрос. Должен ли я заменить метод start для шага 6?

2. попробуйте. Шаг 6 работает для меня, если замена этого фрагмента кода по-прежнему не работает, проверьте конфигурацию вашей консоли.

Ответ №2:

Несколько кратких советов по этому коду, попробуйте заменить ContinueWith на ContinueWithOnMainThread . Это упростит отладку вашего кода и позволит избежать любых проблем, связанных с потоками в Unity (в частности, ваш GameManager.instance.SetNombre заставляет меня нервничать). Это ошибка при замене.

Чтобы аутентификация работала на Android, вам нужны три вещи:

  1. службы Google.файл json (есть вероятность, что у вас есть GoogleService-Info.plist, если вы зарегистрировали приложение для iOS). С справочного сайта:
  1. Получите конфигурационный файл для вашего приложения Android, перейдите в настройки проекта в консоли Firebase.
  2. В карточке «Ваши приложения» выберите название пакета приложения, для которого вам нужен конфигурационный файл.
  3. Нажмите Google-services.json.
  4. Переместите ваш конфигурационный файл в каталог модуля (на уровне приложения) вашего приложения. Убедитесь, что в вашем приложении есть только этот самый последний загруженный конфигурационный файл.

(примечание для шага 4 в Unity — просто поместите его куда-нибудь в свои активы / каталог)

  1. Убедитесь, что вы включили аналитику в своей консоли Firebase. Похоже, вы это уже делали.

  2. Добавьте свой SHA-1 в Firebase. Это основано на ключе подписи, поэтому каждому разработчику может потребоваться зарегистрировать свой локальный development SHA-1, и вы захотите зарегистрировать свой окончательный ключ подписи. С справочного сайта:

Выполните эти действия, если вы изначально не предоставили отпечаток пальца сертификата SHA для своего приложения Firebase Android или если вам нужно добавить дополнительный.

  1. Убедитесь, что у вас есть отпечаток пальца SHA вашего сертификата подписи.
  2. В настройках вашего проекта перейдите на карточку «Ваши приложения».
  3. Выберите приложение Firebase для Android, к которому вы хотите добавить отпечаток SHA.
  4. Нажмите Добавить отпечаток пальца.
  5. Введите или вставьте отпечаток пальца SHA, затем нажмите Сохранить.

Чтобы получить ключ SHA-1 для разработки, введите примерно такую команду:

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

И если вы не можете запустить команду keytool, я написал это краткое объяснение. Вы можете найти его в своем каталоге JDK (у вас где-то есть JDK, если вы создаете сборки Android).