android – Firebase – 如何在身份验证后为每个用户写入/读取数据

前端之家收集整理的这篇文章主要介绍了android – Firebase – 如何在身份验证后为每个用户写入/读取数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试了解,但无法看到登录后,我正在存储的数据的方式和位置.
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) {
    }
}

在这一点上,我已经成功地认证并登陆到“主体”.下一个在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
}

有一个添加按钮,我用来将新记录从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": {
      "users": {
        "$uid": {
          ".write": "auth != null && auth.uid == $uid",".read": "auth != null && auth.uid == $uid"
        }
      }
    }
}

我试图打开诸如https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx的URL,但不会显示任何数据.

我想提供一些信息:

>如何在认证后添加用户特定的数据.如果我们对用户的读/写没有任何限制,因为我可以轻松地读/写数据,它不能是无缝的.
>有没有任何Firebase网页视图可视化数据库或查看JSON数据,我可以在哪里查看/修改Android设备上的数据?

解决方法

首先修改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");

最后,数据看起来像这样:

猜你在找的Android相关文章