扩展Firebase用户

问题描述 投票:1回答:2

在验证用户并更新FirebaseUser表后,我需要保存其他额外数据,如年龄,性别,地址等。我想通过创建用户节点并通过UID挂钩到FirebaseUser来使用实时数据库。我的工作方式是否正确?如果有人能帮我理解,我将不胜感激。谢谢。

android firebase firebase-realtime-database firebase-authentication
2个回答
3
投票

Firebase中的常见做法是为您的用户创建helper classmodel classPOJO class),这是实现此目标的核心方法:

public class User implements Serializable {
    private String name;
    private int age;
    private String gender;
    private String address;
    private String email;

    public User() {}

    public User(String name, int age, String gender, String address, String email) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.address = address;
        this.email = email;
    }

    public String getName() {return name;}
    public void setName(String name) {this.name = name;}

    public int getAge() {return age;}    
    public void setAge(int age) {this.age = age;}

    public String getGender() {return gender;}
    public void setGender(String gender) {this.gender = gender;}

    public String getAddress() {return address;}
    public void setAddress(String address) {this.address = address;}

    public String getEmail() {return email;}  
    public void setEmail(String email) {this.email = email;}
}

因为您需要为用户提供唯一标识符,所以uid是您的最佳选择。您可以使用以下代码行获取uid

String uid = FirebaseUser.getInstance().getCurrentUser().getUid();

要将数据插入到数据库中,需要创建User类的对象。所以请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
User user = new User("John", 25, "male", "101 Main Street", "[email protected]");
usersRef.child(uid).setValue(user);

在此,您只需使用公共设置器和getter来添加/获取Firebase数据库中的数据。

您的数据库看起来像这样:

Firebase-root
    |
    --- users
          |
          --- uid1
               |
               --- name: "John"
               |
               --- age: 25
               |
               --- gender: "male"
               |
               --- address: "101 Main Street"
               |
               --- email: "[email protected]"

2
投票

这是正确的,要获得你可以使用的current user's unique ID

FirebaseUser.getInstance().getCurrentUser().getUid();

然后,您可以使用该唯一ID作为密钥将有关用户的详细信息存储到Firebase实时数据库中,例如:

FirebaseUser user = FirebaseUser.getInstance().getCurrentUser();
String userId = user.getUid();

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");

HashMap<String, Object> userDetails = new HashMap<>();
message.put("name", "P. Sherman");
message.put("age", 50);
message.put("gender", "male");
message.put("address", "42 Wallaby Way, Sydney");
message.put("email", user.getEmail());

messagesRef.child(userId).setValue(userDetails);
© www.soinside.com 2019 - 2024. All rights reserved.