Unity3d / Firebase - как я могу получить доступ к защищенной базе данных Firebase? - PullRequest
0 голосов
/ 22 февраля 2019

Я использую Firebase для аутентификации и сохранения данных пользователей в моей базе данных.

Во-первых, я постановил, что доступ к моей базе данных имеют только мои пользователи

"rules": {
    "MyUsers": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }

Во-вторых, я использую следующий код для входа в систему, но после входа я все еще могуЯ не могу получить доступ к моей базе данных (поскольку я ограничен в доступе только одному и тому же пользователю). Так в чем проблема?

firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;        

Firebase.Auth.Credential credential =
    Firebase.Auth.FacebookAuthProvider.GetCredential(aToken);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task =>
    {
        if (task.IsCanceled)
        {
            Debug.LogError("SignInWithCredentialAsync was canceled.");
            LoginPanel.SetActive(true);
            return;
        }
        if (task.IsFaulted)
        {
            Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
            LoginPanel.SetActive(true);
            return;
        }
        // creating the new user using their information (email, name etc)
        Firebase.Auth.FirebaseUser newUser = task.Result;


        Debug.LogFormat("User signed in successfully: {0} ({1})",
            newUser.DisplayName, newUser.UserId, newUser.Email);

    });

Я просто хочу получить доступ, например: к базе данных X пользователем X, если я пытаюсь читать или записывать данные в базу данных, я не получаю результатов, и данные не будут сохранены.

[EDIT]

Способ, которым я пытаюсь получить доступ к моей базе данных и установить значения и ключи;

//I set values for each child in the database this way:

    private void writeNewUser()  // here we save some data to our databse
    {
        if (String.IsNullOrEmpty(UserId)) return;

        playerDbRef.Child("MyUsers").Child(UserId).Child("User_Info").Child("name").SetValueAsync(UserName);
        playerDbRef.Child("MyUsers").Child(UserId).Child("User_Info").Child("email").SetValueAsync(Email);



        Debug.Log("User data saved to DATABASE");
    }

И для чтения данных я запускаю следующие строки кодов:

protected void StartListener()
    {
        FirebaseDatabase.DefaultInstance.GetReference("MyUsers").Child(UserId)
    .ValueChanged += HandleValueChanged;

    }
    
    void HandleValueChanged(object sender, ValueChangedEventArgs args)
    {
        if (args.DatabaseError != null)
        {
            Debug.LogError(args.DatabaseError.Message);
            return;
        }
string name = args.Snapshot.Child("User_Info").Child("name").Value.ToString();
string email = args.Snapshot.Child("User_Info").Child("email").Value.ToString();

        

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