J'ai essayé de comprendre mais je n'ai pas pu voir comment et où pourraient être les données que je stocke après la connexion.
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) {
}
}
À ce stade, je suis authentifié avec succès et j'ai atterri sur MainActivity
. Suivant dans onCreate
de MainActivity
. J'initialise 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
}
Il y a un bouton d'ajout que j'ai utilisé pour pousser de nouveaux enregistrements de Android vers 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);
}
});
Mais le code ci-dessus n'ajoute aucun enregistrement (évident de ListView
qui n'est pas mis à jour) ou du moins je ne sais pas où chercher les données. J'ai vérifié l'ouverture Firebase
dans le navigateur, mais je ne sais pas comment vérifier les données spécifiques à l'utilisateur?
J'ai modifié mon Firebase Rules
comme
{
"rules": {
"users": {
"$uid": {
".write": "auth != null && auth.uid == $uid",
".read": "auth != null && auth.uid == $uid"
}
}
}
}
J'ai essayé d'ouvrir des URL telles que https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx mais cela n'affichait aucune donnée.
J'aimerais avoir des informations sur:
Comment ajouter des données spécifiques à l'utilisateur après l'authentification. Cela ne peut-il pas être transparent comme lorsque nous n'avons aucune restriction en lecture/écriture sur la base de l'utilisateur, car je pourrais facilement lire/écrire des données.
Existe-t-il une Firebase
vue Web pour visualiser la base de données ou voir les données JSON, où je peux voir/modifier les données vers/depuis Android appareil?
Tout d'abord, modifiez les règles Firebase comme suit:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
Ensuite, dans Java Code:
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");
Au final, les données ressembleraient à ceci:
Pour la fin Web
Code Javascript:
var user = firebase.auth().currentUser;
if (user != null) {
uid = user.uid;
firebase.database().ref('/users/'+uid).Push({
foo: 'abc',
bar: 'pqr'
});
}
Lisez https://firebase.google.com/docs/auth/web/manage-users#get_the_currently_signed-in_user pour plus d'informations.