我正试图从Firebase实时数据库中检索当前登录用户的配置文件数据。我已经通过电子邮件和密码验证了我的用户。然后,我将注册数据保存在数据库中,作为一个对象,如下所示:(所有这些代码都在SignUpActivity中的onCreate中)。我将数据保存为用户对象。我的用户模型类有getter和setter,参数化和空白构造函数。
´´´´// Initialize FirebaseAuth and DatabaseReference
mFirebaseAuth = FirebaseAuth.getInstance();
mDatabaseRef = FirebaseDatabase.getInstance().getReference("users");
mFirebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
//save all data to database
String mUserId = mFirebaseAuth.getCurrentUser().getUid();
User user = new User(email, name,tel, address1,address2,user_type, mUserId);
//add to database
mDatabaseRef.child(mUserId).setValue(user);
//open main activity
Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
因此,mUserId是经过身份验证的用户的用户ID。我的数据库结构如下,规则是默认公共的。
wish-store-42facaddclose
users
2GbVFSMFrihqVJ8OAXBa56owNW93
address1: "juja"
address2: "Town"
email: "a.bea@gmail.com"
phone: "+237638256239"
userId: "2GbVFSMFrihqVJ8OAXBa56owNW93"
userName: "Beatrice Njambi"
userType: "Buyer Account"
//instantiate firebaseAuth
mFirebaseAuth = FirebaseAuth.getInstance();
userName = (TextView) findViewById(R.id.userNameHeader);
//check to see if user is logged in
mFirebaseUser = mFirebaseAuth.getCurrentUser();
if (mFirebaseUser == null) {
//the user is not logged in, start login activity
loadLogInView();
} else {
String mUserId = mFirebaseUser.getUid();
root = FirebaseDatabase.getInstance().getReference();
DatabaseReference mDatabaseRef = root.child("users").child(mUserId);
ValueEventListener profileListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
userName.setText(user.getUserName());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.i("Read failed", databaseError.getMessage());
}
};
mDatabaseRef.addValueEventListener(profileListener);
}
提前谢了。
尝试直接为数据库对象添加ValueEventListener
,而不是稍后设置。尝试检查是否已初始化FirebaseAuth
。
我使用这个firebase规则: 那么我需要更改firebase规则或更改编码吗?
当我试图检索recycleview中保存的数据时,它们显示的是所有用户的数据,而不是登录的用户。有人能帮忙吗?
我最近刚开始使用Google的firebase作为android应用程序数据的在线集中数据库(从使用本地sqlite迁移过来)。 作为firebase的新手,我想问一下Android的firebase在线数据库有多安全? 从下面的线程中可以看出,任何能够访问google-services.json的人都可以插入和修改firebase数据库中的在线数据吗? null 到目前为止,为了增加安全性,我已
firebase数据库最近的更新似乎有一些变化。我的项目在firebase\u数据库:^7.0.0版本下运行良好,但在firebase数据库的更新版本中,我无法更新项目代码。 以下是v7的工作版本 firebase\u数据库^9.0.12上的同一代码出现错误。我收到的错误在`(DataSnapShot snap)async{…}上错误是 无法将参数类型“Future Function(DataSn