Ho cercato di capire ma non sono in grado di vedere come e dove potrebbero essere i dati che sto memorizzando dopo l'accesso.Firebase - Come scrivere/leggere i dati per utente dopo l'autenticazione
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) {
}
}
A questo punto sono autenticati con successo ed è atterrato sul MainActivity
. Avanti in onCreate
di MainActivity
. Inizializzo 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
}
C'è un pulsante aggiuntivo che ho usato per spingere nuovi record da Android a 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);
}
});
Ma soprattutto il codice non aggiunge alcun record (evidente dal ListView
che non viene aggiornato) o almeno potrei non sapere dove cercare per i dati. Ho controllato l'apertura di Firebase
nel browser, ma non sono sicuro di come verificare i dati specifici dell'utente?
ho modificato il mio Firebase Rules
come
{
"rules": {
"users": {
"$uid": {
".write": "auth != null && auth.uid == $uid",
".read": "auth != null && auth.uid == $uid"
}
}
}
}
ho provato ad aprire URL come https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx ma non avrebbe mostrato alcun dato.
Vorrei avere qualche informazione su:
Come aggiungere dati specifici dell'utente dopo l'autenticazione. Non può essere trasparente come quando non abbiamo alcuna restrizione sulla lettura/scrittura per utente, perché potrei facilmente leggere/scrivere dati.
C'è una vista web
Firebase
per visualizzare il database o vedere i dati JSON, dove posso vedere/modificare i dati da/per dispositivo Android?
Tradizionalmente si avrebbe un nodo/utenti in firebase in cui verranno archiviati i dati dell'utente. Se si tratta di un nuovo utente, si aggiunge il proprio uid al nodo degli utenti come chiave e i figli sarebbero la chiave: coppie di valori dei dati che si desidera memorizzare; nome: posizione "bob": "florida" ecc. Se l'utente si autentica ed esiste, conoscerai il loro uid in modo che tu possa leggere nel loro nodo da/utenti.C'è una vista web Firebase per i tuoi dati, si chiama Firebase Dashboard ed è accessibile solo dopo aver effettuato l'accesso al tuo account sul sito web di Firebase. – Jay
Ho avuto la stessa domanda e l'ho risolto qui: http://stackoverflow.com/questions/35820836/how-to-make-sure-a-user-can-only-see-and-access-theirowndata -in-firebase –