Ala*_* M. 13 android firebase firebase-authentication firebase-realtime-database
我的Android应用中有Firebase身份验证.我的问题是如何在经过身份验证的用户(显示在Firebase::AuthFirebase控制台的选项卡中)和数据库(Firebase::Database选项卡)之间进行链接.
我需要数据库中的数据与相关用户在链接Auth由User UID出现在Auth,并最终发送关于特定查询UID得到的相关信息Database.
是否有自动/内置功能可以执行此操作,或者Database每次我对用户进行身份验证时是否必须为用户创建新条目,然后使用显示的UID值为其创建ID字段Auth?
在用户管理文档中,它仅解释了如何将用户添加到Auth选项卡并重置其密码.
Ala*_* M. 12
身份验证后,使用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);
Run Code Online (Sandbox Code Playgroud)
USERS_TABLE是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) {
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
或者没有反思:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Profile p = dataSnapshot.getValue(Profile.class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17216 次 |
| 最近记录: |