Android 从firebase设置用户数据的特定值
在我的应用程序中,我有注册屏幕。它要求输入用户名、电子邮件和密码。我正在将电子邮件和用户名推送到firebase实时数据库。假设现在用户从我的应用程序注销,卸载应用程序并再次安装,然后尝试登录。在登录屏幕中,我只要求输入电子邮件和密码,如何检索用户的用户名。因为用户可能会在注册后卸载应用程序,所以共享优先权将不起作用。我尝试了以下代码,但没有给出正确的输出Android 从firebase设置用户数据的特定值,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,在我的应用程序中,我有注册屏幕。它要求输入用户名、电子邮件和密码。我正在将电子邮件和用户名推送到firebase实时数据库。假设现在用户从我的应用程序注销,卸载应用程序并再次安装,然后尝试登录。在登录屏幕中,我只要求输入电子邮件和密码,如何检索用户的用户名。因为用户可能会在注册后卸载应用程序,所以共享优先权将不起作用。我尝试了以下代码,但没有给出正确的输出 mFirebaseDatabase = FirebaseDatabase.getInstance(); mMessagesDatabas
mFirebaseDatabase = FirebaseDatabase.getInstance();
mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("userdetails");
mMessagesDatabaseReference.child( auth.getCurrentUser().getUid()).child("USERNAME")
我的数据库如下所示
如何在登录时获取用户名,因为在登录时只会询问电子邮件和密码。任何帮助都将不胜感激。为了获得用户名,您需要在该特定节点上附加一个侦听器。请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("userdetails").child(auth.getCurrentUser().getUid()).child("USERNAME");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String USERNAME = dataSnapshot.getValue(String.class);
Log.d("TAG", USERNAME);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);
您的输出将是:
pritish
我犯了一个错误。java.lang.NullPointerException:println需要一条消息您的auth.getCurrentUser.getUid是否返回正确的用户id?我得到的auth.getCurrentUser.getUid是DXV2xGNXXPNC50IzDNQYAQ30CZ2,但在数据库中完全不同我有一个问题,在您的回答中,第二行应该是rootRef.childuserdetails.childauth.getCurrentUser.getUid;如果我错了,请纠正我哦,是的,我明白了。这就是问题所在。在数据库中添加数据时,不要使用push方法,而是使用auth.getCurrentUser.getUid。当你得到的时候,你肯定会成功的。