Я использую 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();
}