Firebase – 如何在authentication后为每个用户写入/读取数据

我试图理解,但无法看到login后如何以及在哪里可能存储的数据。

public static final String BASE_URL = "https://xyz.firebaseio.com"; Firebase ref = new Firebase(FirebaseUtils.BASE_URL); ref.authWithPassword("xyz@foo.com", "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) { } } 

在这一点上,我成功通过身份validation并登陆到MainActivity 。 接下来在MainActivity onCreate 。 我初始化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 } 

有一个添加button,我用来将新logging从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); } }); 

但是,上面的代码不会添加任何logging(从ListView不到更新)或至less我可能不知道在哪里查找数据。 我检查了在浏览器中打开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,但不会显示任何数据。

我想获得一些信息:

  1. 如何在authentication后添加用户特定的数据。 不能像在用户基础上对读/写没有任何限制那样是无缝的,因为我可以很容易地读/写数据。

  2. 是否有任何Firebase Web视图可视化数据库或查看JSON数据,我可以在Android设备上查看/修改数据?

Solutions Collecting From Web of "Firebase – 如何在authentication后为每个用户写入/读取数据"

首先,修改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数据

对于Web结束

Javascript代码:

 var user = firebase.auth().currentUser; if (user != null) { uid = user.uid; firebase.database().ref('/users/'+uid).push({ foo: 'abc', bar: 'pqr' }); } 

请阅读https://firebase.google.com/docs/auth/web/manage-users#get_the_currently_signed-in_user以获取更多信息。