Подключение базы данных реального времени к базе данных аутентификации в Firebase - PullRequest
0 голосов
/ 10 марта 2020

Я создаю приложение, которое позволяет пользователю войти и зарегистрироваться. В настоящее время я использую Firebase для хранения этих данных, но мне нужно больше данных, чем просто электронная почта и пароль. Я могу хранить несколько полей в базе данных в режиме реального времени, однако моя страница входа в систему использует Аутентификацию с помощью firebase. Можно ли как-то соединить их?

Страница входа

 //creating a new user
        firebaseAuth.signInWithEmailAndPassword(username, password)
                .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_LONG).show();
                            startActivity(new Intent(getApplicationContext(), FAQ.class));
                            finish();
                        } else{
                            Toast.makeText(MainActivity.this, "Login Error", Toast.LENGTH_LONG).show();
                        }
                    }
                });

    }

Страница регистрации

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        //firebaseAuth =FirebaseAuth.getInstance();
        userN=(EditText)findViewById(R.id.userN);
        password2=(EditText)findViewById(R.id.password2);

        gender2=(EditText)findViewById(R.id.gender2);
        headInjury2=(EditText)findViewById(R.id.headInjury2);
        Smoker2=(EditText)findViewById(R.id.Smoker2);
        dateOfBirth2=(EditText)findViewById(R.id.dateOfBirth2);
        submitBtn2=(Button)findViewById(R.id.submitBtn2);
        user= new User();
        reff= FirebaseDatabase.getInstance().getReference().child("User");

        submitBtn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int date=Integer.parseInt(dateOfBirth2.getText().toString().trim());


                user.setUserN(userN.getText().toString().trim());
                user.setPassword2(password2.getText().toString().trim());
                user.setGender2(gender2.getText().toString().trim());
                user.setHeadInjury2(headInjury2.getText().toString().trim());
                user.setSmoker2(Smoker2.getText().toString().trim());
                user.setDOB(date);
                reff.push().setValue(user);
                Toast.makeText(Register.this, "Successfully registered", Toast.LENGTH_LONG).show();


            }
        });
    }

1 Ответ

0 голосов
/ 10 марта 2020

Чтобы хранить дополнительные данные о пользователе в Базе данных реального времени, вы обычно хотите хранить эту информацию под UID пользователя.

Таким образом, у вас будет что-то вроде

Users: {
  uidOfCaitlin: {
    firstName: "Caitlin",
    lastName: "Daly McDowell",
    dob: "2020-03-10"
  },
  uidOfFrank: {
    firstName: "Frank",
    lastName: "van Puffelen",
    dob: "1970-03-10"
  }
}

Для хранения таких данных вы должны сделать что-то вроде:

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("Users");
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

usersRef.child(uid).setValue(user);

Эта топика c была рассмотрена довольно давно, поэтому я также рекомендую вам проверить:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...