Подтвердить что ты не робот

Firebase - Как написать/прочитать данные для каждого пользователя после аутентификации

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

public static final String BASE_URL = "https://xyz.firebaseio.com";

Firebase ref = new Firebase(FirebaseUtils.BASE_URL);
    ref.authWithPassword("[email protected]", "some_password", new Firebase.AuthResultHandler() {

    @Override
    public void onAuthenticated(AuthData authData) {
        Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
        startActivity(new Intent(LoginActivity.this, MainActivity.class));
    }
    @Override
    public void onAuthenticationError(FirebaseError firebaseError) {
    }
}

На этом этапе я успешно прошел аутентификацию и приземлился на MainActivity. Далее в onCreate of MainActivity. Я инициализирую Firebase

firebase = new Firebase(FirebaseUtils.BASE_URL).child("box");

// adapter below is an ArrayAdapter feeding ListView
firebase.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        if (dataSnapshot.getValue(Box.class) instanceof Box)
            adapter.add(dataSnapshot.getValue(Box.class).getName());
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        adapter.remove(dataSnapshot.getValue(Box.class).getName());
    }

    // other callbacks
}

Есть кнопка добавления, которую я использовал для вывода новых записей с Android на Firebase.

final Button button = (Button) findViewById(R.id.addButton);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Box box = new Box("Box " + System.currentTimeMillis(), "Location " + System.currentTimeMillis());
        Firebase fbBox = firebase.child("" + System.currentTimeMillis());
        fbBox.setValue(box);
    }
});

Но выше код не добавляет никакой записи (очевидно, из ListView, которая не обновляется) или, по крайней мере, я не знаю, где искать данные. Я проверил открытие Firebase в браузере, но я не уверен, как проверить конкретные данные пользователя?

Я изменил свой Firebase Rules как

{
    "rules": {
      "users": {
        "$uid": {
          ".write": "auth != null && auth.uid == $uid",
          ".read": "auth != null && auth.uid == $uid"
        }
      }
    }
}

Я попытался открыть URL-адреса, такие как https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx, но он не покажет никаких данных.

Я хотел бы получить некоторую информацию о:

  • Как добавить данные пользователя после аутентификации. Нельзя ли это быть бесшовным, например, когда у нас нет ограничений на чтение/запись на основе пользователя, потому что я мог легко читать/записывать данные.

  • Есть ли веб-представление Firebase для визуализации базы данных или просмотра данных JSON, где я могу видеть/изменять данные на/с устройства Android?

4b9b3361

Ответ 1

Сначала измените правила Firstbase:

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

Затем в коде Java:

Firebase rootRef = new Firebase("https://user-account.firebaseio.com/");
// Assuming the user is already logged in.
Firebase userRef = rootRef.child("users/" + rootRef.getAuth().getUid());
userRef.child("message1").setValue("Hello World");

В конце, данные будут выглядеть примерно так:

Данные Firebase