我的Android应用中有Firebase身份验证.我的问题是如何在经过身份验证的用户(出现在Firebase控制台中的Firebase :: Auth选项卡)和数据库(Firebase :: Database选项卡)之间进行链接.
我需要通过Auth中出现的用户UID将数据库中的数据与Auth中的相关用户链接,并最终发送有关特定UID的查询以获取数据库中的相关信息.
是否有自动/内置功能可以执行此 *** 作,或者每次我对用户进行身份验证时是否必须为数据库中的用户创建新条目,然后使用Auth中显示的UID值为其创建ID字段?
在User Management docs中,它仅解释了如何将用户添加到“身份验证”选项卡并重置其密码.
解决方法:
身份验证后,使用Firebase提供的UID创建一个子项,并将其值设置为您的用户类:
//get firebase userFirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();//get referenceDatabaseReference ref = FirebaseDatabase.getInstance().getReference(USERS_table);//build childref.child(user.getUID()).setValue(user_class);
USERS_table是root的直接子项.
然后,当您想要检索数据时,通过其UID获取对用户的引用,侦听addListenerForSingleValueEvent()(仅调用一次),并使用反射迭代结果:
//get firebase userFirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();//get referenceDatabaseReference 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 inforef.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) { }});
编辑:
或者没有反思:
@OverrIDepublic voID onDataChange(DataSnapshot dataSnapshot) { final Profile p = dataSnapshot.getValue(Profile.class);}
总结 以上是内存溢出为你收集整理的android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?全部内容,希望文章能够帮你解决android – 如何在Firebase中经过身份验证的用户和数据库之间进行链接?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)