Próbowałem zrozumieć, ale nie byłem w stanie zobaczyć, jak i gdzie mogą znajdować się dane przechowywane po zalogowaniu.Firebase - Jak zapisywać/czytać dane na użytkownika po uwierzytelnieniu
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) {
}
}
W tym momencie pomyślnie uwierzytelniłem i wylądowałem na MainActivity
. Następnie w onCreate
z . Zainicjować 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
}
znajduje się przycisk dodać, że użyłem do pchania nowe rekordy od Androida do 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);
}
});
Ale powyższy kod nie dodaje żadnego rekordu (wynika z ListView
że nie jest aktualizowany) lub przynajmniej nie może wiedzieć, gdzie szukać danych. Sprawdziłem otwarcie przeglądarki Firebase
, ale nie wiem, jak sprawdzić dane specyficzne dla użytkownika?
zmodyfikowałem mój Firebase Rules
jak
{
"rules": {
"users": {
"$uid": {
".write": "auth != null && auth.uid == $uid",
".read": "auth != null && auth.uid == $uid"
}
}
}
}
Próbowałem otworzyć URL, takich jak https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx ale nie wykazują żadnych danych.
Chciałbym mieć jakieś informacje na temat:
Jak dodać danych konkretnego użytkownika po uwierzytelnieniu. Czy nie może być bezproblemowy, jak wtedy, gdy nie mamy żadnych ograniczeń dotyczących odczytu/zapisu na podstawie użytkownika, ponieważ mógłbym łatwo odczytać/zapisać dane.
Czy istnieje widok sieciowy
Firebase
w celu wizualizacji bazy danych lub zobacz dane JSON, gdzie mogę zobaczyć/zmodyfikować dane do/z urządzenia z systemem Android?
Tradycyjnie w węźle FireBase byłby węzeł/użytkownicy, w którym przechowywano dane użytkownika. Jeśli jest to nowy użytkownik, dodajesz jego identyfikator użytkownika do węzła użytkownika jako klucz, a dzieci będą parami klucz: wartość danych, które miałeś przechowywać; name: lokalizacja "bob": "florida" itd. Jeśli użytkownik uwierzytelnia się i istnieje, poznasz swój identyfikator uid, aby móc czytać w swoim węźle od/users.Dostęp do danych jest w Firebase, nazywany jest Firebase Dashboard i można uzyskać do nich dostęp po zalogowaniu się na konto w witrynie Firebase. – Jay
Miałem to samo pytanie i rozwiązałem je tutaj: http://stackoverflow.com/questions/35820836/how-to-make-sure-a-user-can-only-see-and-access-their-own-data -in-firebase –