Android 如何在Firebase中连接经过身份验证的用户和数据库?

Android 如何在Firebase中连接经过身份验证的用户和数据库?,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我的Android应用程序中有Firebase身份验证。我的问题是如何在经过身份验证的用户(出现在Firebase控制台的Firebase::Auth选项卡)和数据库(Firebase::database选项卡)之间建立链接 我需要通过Auth中出现的user UID将数据库中的数据与Auth中的相关用户链接,并最终发送有关特定UID的查询,以获取数据库中的相关信息 是否有自动/内置的功能可以做到这一点,或者每次我对用户进行身份验证,然后使用出现在Auth中的UID值为其创建ID字段时,我都必须

我的Android应用程序中有Firebase身份验证。我的问题是如何在经过身份验证的用户(出现在Firebase控制台的
Firebase::Auth
选项卡)和数据库(
Firebase::database
选项卡)之间建立链接

我需要通过
Auth
中出现的
user UID
将数据库中的数据与
Auth
中的相关用户链接,并最终发送有关特定
UID
的查询,以获取
数据库中的相关信息

是否有自动/内置的功能可以做到这一点,或者每次我对用户进行身份验证,然后使用出现在
Auth
中的UID值为其创建ID字段时,我都必须在
数据库中为用户创建一个新条目


在中,它仅解释如何将用户添加到
Auth
选项卡并重置其密码。

验证后,使用Firebase提供的UID创建一个子项,并将其值设置为您的用户类:

//get firebase user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

//get reference
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_TABLE);

//build child
ref.child(user.getUid()).setValue(user_class);
USERS\u表是root的直接子级

然后,当您想要检索数据时,通过用户的UID获取对该用户的引用,侦听
addListenerForSingleValueEvent()
(仅调用一次),并通过反射迭代结果:

//get firebase user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

//get reference
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_TABLE).child(user.getUid());
//IMPORTANT: .getReference(user.getUid()) will not work although user.getUid() is unique. You need a full path!

//grab info
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final Profile tempProfile = new Profile(); //this is my user_class Class
        final Field[] fields = tempProfile.getClass().getDeclaredFields();
        for(Field field : fields){
            Log.i(TAG, field.getName() + ": " + dataSnapshot.child(field.getName()).getValue());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    final Profile p = dataSnapshot.getValue(Profile.class);
}
编辑:

或者不加思考:

//get firebase user
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

//get reference
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_TABLE).child(user.getUid());
//IMPORTANT: .getReference(user.getUid()) will not work although user.getUid() is unique. You need a full path!

//grab info
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final Profile tempProfile = new Profile(); //this is my user_class Class
        final Field[] fields = tempProfile.getClass().getDeclaredFields();
        for(Field field : fields){
            Log.i(TAG, field.getName() + ": " + dataSnapshot.child(field.getName()).getValue());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    final Profile p = dataSnapshot.getValue(Profile.class);
}

您需要编写代码来将用户配置文件存储在数据库中。请参阅,,,可能是@AndréKool的副本,这看起来像javascript。。。我问的是AndroidI,我知道,但原理是完全相同的,而不是你可以查看的用于读写数据的web文档。您看到的第一个示例应该是关于保存用户数据的。@AndréKool我没有在写。。。我想知道是否有一种内置的方式来映射UID和数据库。。。好像没有内置的东西。解决方案如我在问题中所说(现在我发布了答案)