Как получить данные из Firebase после аутентификации в Unity? - PullRequest
0 голосов
/ 23 апреля 2019

Здравствуйте, ребята, я новичок в Firebase и пытаюсь разработать простую визуализацию данных гистограммы, которая связана с базой данных Firebase в реальном времени.Я пытаюсь прочитать / получить данные из firebase после аутентификации.Во-первых, когда я пытался извлечь данные из firebase без аутентификации, он отлично работает в моем редакторе Unity.Но когда я настраиваю аутентификацию, он не может прочитать метод «HandleValueChanged», который предназначен для чтения / извлечения данных из firebase.HandleValueChanged - это метод, вызываемый из "FirebaseDatabase.DefaultInstance.GetReference (" Node1 "). ValueChanged + = HandleValueChanged".Как я могу решить эту проблему или есть какие-либо другие способы получения данных из firebase после auth.SignInWithEmailAndPasswordAsync (электронная почта, пароль) ... и т. Д.?

Мои правила безопасности

{

  "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
  }
}

Это мой метод запуска ()

public void Start()
    {

Firebase.FirebaseApp.DefaultInstance.SetEditorP12FileName("xxxxxxxxxxx.p12");
        Firebase.FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("xxxxxxxxxxxxxxxxxx.iam.gserviceaccount.com");
        Firebase.FirebaseApp.DefaultInstance.SetEditorP12Password("notasecret");


        Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther;
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
            dependencyStatus = Firebase.FirebaseApp.CheckDependencies();
            //dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                Debug.Log("Successfully It will now Initialize Firebase " + dependencyStatus);
                InitializeFirebase();
            }
            else
            {
                Debug.LogError(
                  "Could not resolve all Firebase dependencies: {0}" + dependencyStatus);
            }
        });
    }

После проверки состояния зависимости теперь он инициализирует базу данных огня.Вот мой метод InitializeFirebase ():

public void InitializeFirebase()
    {
        Firebase.FirebaseApp app = FirebaseApp.DefaultInstance;
        app.SetEditorDatabaseUrl("https:xxxxxxxxxxxxxxxxxxxxxx.com");

        if (app.Options.DatabaseUrl != null)
        {
            app.SetEditorDatabaseUrl(app.Options.DatabaseUrl);
        }

        auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
        auth.SignInWithEmailAndPasswordAsync("email@mail.com", "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);

            GetData();

        });
    }

И теперь, когда он достигает метода GetData, я пишу Debug.Log для отслеживания процесса и определения, входит ли он в этот метод после GetReference.

public void GetData()
    {

        FirebaseDatabase.DefaultInstance.GetReference("Node1").ValueChanged += HandleValueChanged;

        Debug.Log("1");
}

Теперь в результате Debug.Log ("1") отображается на консоли Unity, но Debug.Log ("2") внутри метода "HandleValueChanged" не отображается.Это та часть, где он теперь извлекает данные из базы данных Firebase в реальном времени, но при запуске редактора Unity ничего не выводится.

public void HandleValueChanged(object sender, ValueChangedEventArgs args)
    {
        Debug.Log("2");

      if (args.DatabaseError != null)
        {
            Debug.LogError(args.DatabaseError.Message);
            return;
        }

        Debug.Log(args.Snapshot.Child("Node2").Value);
        NumOfOrdersFriedChicken = args.Snapshot.Child("NumberOfOrders").Value.ToString();
        NumOfOrdersLemonGrass = args.Snapshot.Child("NumberOfOrdersLemonGrass").Value.ToString();

        NumOfOrderFriedChickenInt = Int32.Parse(NumOfOrdersFriedChicken);
        NumOfOrderLemonGrassInt = Int32.Parse(NumOfOrdersLemonGrass);

        chart.DataSource.SetValue("Category 1", "Group 1", NumOfOrderFriedChickenInt);
        chart.DataSource.SetValue("Category 2", "Group 1", NumOfOrderLemonGrassInt);
        //chart.DataSource.SlideValue("Category 2", "Group 1", NumOfOrderLemonGrassInt, 4f);

    }

Я ожидаю только вывод трехмерной гистограммы для визуализации данных, котораяподключен к базе огня.Как я могу получить свои данные после аутентификации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...