Приложение Firebase не добавит пользователя в мою базу данных в реальном времени - PullRequest
0 голосов
/ 07 декабря 2018

Я работаю над приложением для Android и пытаюсь добавить пользователя в свою базу данных в реальном времени в Firebase.Это делается во фрагменте регистрации.Вот код для этого:

public class RegisterFragment extends Fragment {
    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @return A new instance of fragment RegisterFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static RegisterFragment newInstance() { return  new RegisterFragment(); }
    private FirebaseAuth mAuth;
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("Users");

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_register,
                container, false);
        mAuth = FirebaseAuth.getInstance();
        final EditText user = view.findViewById(R.id.username);
        final EditText email = view.findViewById(R.id.email);
        final EditText password = view.findViewById(R.id.password);
        final EditText confirmPassword = view.findViewById(R.id.confirmpassword);
        final Button btnAction = view.findViewById(R.id.AddUser);
        final Button btnLogin = view.findViewById(R.id.btnLoginTab);

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
                ft.replace(R.id.copyright_frame_layout, LoginFragment.newInstance());
                ft.addToBackStack(null);
                ft.commit();
            }
        });

        btnAction.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (password.getText().toString().equals(confirmPassword.getText().toString()))
                    AddUser(user.getText().toString(), email.getText().toString(), password.getText().toString(), confirmPassword.getText().toString());
                else {
                    password.getText().clear();
                    confirmPassword.getText().clear();
                    Toast.makeText(getActivity(), "Passwords do not match, please reenter your password!", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
        });
        return view;
    }
private void AddUser(final String username, final String email, final String password, final String confirmpassword){
// Write a message to the database


    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (!task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Toast.makeText(getActivity(),"A user with this same email is found!",Toast.LENGTH_SHORT).show();
                        return;
                    }
                    else{
                        Users user = new Users(email, password, username);
                        String messageId = myRef.push().getKey();

                        myRef.child(messageId).setValue(user);
                        Toast.makeText(getActivity(),"A new user has been added!",Toast.LENGTH_SHORT).show();
                    }
                }
            });
}
}

Что мой код делает сейчас, так это то, что он принимает некоторые базовые значения (имя пользователя, адрес электронной почты и пароль) и вместо того, чтобы добавить это в мою базу данных в реальном времени, которая называется Users,это просто добавление его в качестве одного из пользователей аутентификации.

enter image description here

Вот что у меня есть в пользователях

enter image description here

Я хотел бы знать, как мне продолжать добавлять пользователей в мою базу данных в реальном времени.

1 Ответ

0 голосов
/ 08 декабря 2018

Хорошо, так что мне удалось исправить мою проблему.Был ряд шагов (не кодирование), о которых мне не сообщили.Прежде всего, мне нужно было установить в качестве целевой базы данных базу данных реального времени.Мой был установлен на Cloud Firestore "Beta".

enter image description here

Оттуда я должен был настроить свои правила чтения / записи соответственно.Теперь я могу создавать новых пользователей и теперь вижу их в своей базе данных в реальном времени

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