gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:45 25 4
gpt4 key购买 nike

我试图理解但无法看到登录后我存储的数据的方式和位置。

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。接下来在 MainActivityonCreate 中。我初始化 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但它不会显示任何数据。

我想了解一些信息:

  1. 如何在身份验证后添加用户特定数据。难道不能像我们对基于用户的读/写没有任何限制那样无缝,因为我可以轻松地读/写数据。

  2. 是否有任何 Firebase 网页 View 可以可视化数据库或查看 JSON 数据,我可以在其中查看/修改传入/传出 Android 设备的数据?

最佳答案

首先修改Firebase规则如下:

{
"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 Data

关于android - Firebase - 如何在身份验证后写入/读取每个用户的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com