Extend Firebase User

旧街凉风 提交于 2019-12-31 03:54:13

问题


After authenticating the user and updating the FirebaseUser table, I would need to save other extra data such as age, gender, address etc. I would like to use the Realtime Database by creating a user node and hooking to the FirebaseUser through UID. Is my way of working correct? I would be grateful if somebody can help me understand. Thank you.


回答1:


A common practice in Firebase is to create for your user a helper class (model class, POJO class) and this the corect way to achieve this:

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;}
}

Because you need a unique identifier for your users, the uid is the perfect choice. You can get the uid using the following line of code:

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

To insert data into you database, you need to create an object of User class. So please use the following code:

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

In this you can simply use the public setters and getters to add/get data from your Firebase database.

Your database will look like something like this:

Firebase-root
    |
    --- users
          |
          --- uid1
               |
               --- name: "John"
               |
               --- age: 25
               |
               --- gender: "male"
               |
               --- address: "101 Main Street"
               |
               --- email: "john@email.com"



回答2:


That's correct, to get the current user's unique ID you can use:

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

And you can then store details about a user into the Firebase Realtime Database using that unique ID as a key, something like:

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);


来源:https://stackoverflow.com/questions/47177099/extend-firebase-user

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!