Firebase身份validation和数据库

我对Firebase有疑问,我是新手。 我想在登录时返回用户名,但该名称在数据库中,我只想返回名称,当然,与在身份validation中找到的电子邮件一致,也在数据库中。 我的想法是将数据库中的电子邮件与Auth进行比较,如果是真的,请给我起名字。 但我不知道如何开发它。 解决方案? 谢谢

为了实现这一点,您需要使用如下所示的模型类:

public class UserModel implements Serializable { private String userEmail; private String userName; public UserModel() {} public UserModel(String userEmail, String userName) { this.userEmail = userEmail; this.userName = userName; } public String getUserEmail() {return userEmail;} public String getUserName() {return userName;} } 

要实际添加用户,请使用以下代码:

 UserModel userModel = new UserModel("john@email,com", "John"); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference usersRef = rootRef.child("users"); usersRef.child("john@email,com").setValue(userModel); 

您的数据库结构如下所示:

 Firebase-root | --- users | --- john@email,com | --- userEmail: "john@email,com" | --- userName: "John" 

如你所见,我用过(逗号)代替. (点)因为Firebase允许我们在密钥的名称中使用逗号。 此外,要获取与您从身份validation过程中获得的电子邮件对应的用户的userName,请使用以下代码:

 String userEmail = FirebaseAuth.getInstance().getCurrentUser().getEmail(); DatabaseReference userEmailRef = usersRef.child(userEmail); ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot.exists()) { nombre.setText(String.valueOf(dataSnapshot.child("datos").getValue())); Log.d("TAG", userName); } } @Override public void onCancelled(DatabaseError databaseError) {} }; userEmailRef.addListenerForSingleValueEvent(eventListener); 

我在我的一个教程中一步一步地使用谷歌Firebase进行了整个身份validation过程。

我认为你不需要遇到那么多麻烦。 按照这个 ,它可能会帮助你。 您无需进行电子邮件匹配。 Firebase为每个用户提供唯一的用户ID。 一旦用户注册到您的系统,firebase就会提供该ID。 您只需将其保存在数据库中作为该用户的主键。 然后,您可以使用用户ID从数据库中获取数据。 用户ID可以使用firebase.auth().currentUser.uid()在任何地方获取firebase.auth().currentUser.uid()