UserId возвращает ноль - PullRequest
0 голосов
/ 05 марта 2020

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

Примечание

Я вхожу в систему, сопоставляя имя пользователя и пароль из БД, которую я сохранил при регистрации это проблема, из-за которой я не получаю UID, что я не использую какой-либо метод входа в FireBase , а скорее сопоставляю значения из базы данных в процессе входа в систему и при успешном совпадении я вошел в систему пользователя. Потому что если есть какая-либо другая проблема, она не выдаст мне UID на Зарегистрировать активность также, но после входа она выдаст мне нулевое значение на Основная активность и Профиль активности

код входа в систему

 FirebaseDatabase.getInstance().getReference().child("Content").child("Profiles").orderByChild("mobile_number").equalTo(mobileNum)
                .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    for (DataSnapshot user : dataSnapshot.getChildren()) {
                        Profiles profiles = user.getValue(Profiles.class);
                        if (profiles.getPassword().equals(password)) {
                            progressDialog.dismiss();
                            startActivity(new Intent(LoginActivity.this, MainActivity.class));
                        } else {
                            progressDialog.dismiss();
                            HelperClass.showSnakbarMsg(rootView, "Username or Password not matched,please try again");
                        }
                    }
                }

код не работает

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
        String userId = firebaseAuth.getUid();
        Log.d("user",userId) ;

его рету мне в нуле в Main Activity после входа в систему

Мой вопрос

Мой вопрос: если я войду в систему, сопоставив значения в базе данных реального времени Firebase, получу ли я UID пользователя для получения UID должен использовать некоторую аутентификацию Firebase для входа в систему (например, аутентификация по электронной почте / паролю или телефону или Gmail SignIn et c)

1 Ответ

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

После многих отладок и изучения документации FireBase я пришел к выводу, что для получения UID пользователя необходимо использовать любой метод аутентификации firebase для входа в систему. Я получаю нулевое значение, потому что Iam сопоставляет значения из базы данных FireBase, и если они Я вошел в систему. Во всем этом процессе firebase не узнал, кто я. Потому что я использую только его БД, а не официальные методы входа в систему, такие как Email / Password et c. Так что это причина, по которой Iam получает нулевой UID.

А что касается регистрации Iam с использованием Phoneauthentication на очень достоверный номер после автоматической проверки, дайте мне UID для этого пользователя, так как я использую его аутентификацию, чтобы на это время он распознал меня как пользователя и присваивают мне уникальный номер, который я получаю и делаю родительским узлом для пользовательских данных, которые я сохраняю с аутентификацией Firebase во время регистрации И затем в Login при сопоставлении учетных данных пользователя я могу получить этот UID в качестве родительского узла моих значений с помощью этого кода, и вы можете использовать его в любом месте, сохраняя его в общих настройках или передавая намерение из действия в действие

FirebaseDatabase.getInstance().getReference().child("Content").child("Profiles").orderByChild("mobile_number").equalTo(mobileNum)
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        for (DataSnapshot user : dataSnapshot.getChildren()) {
                            **String key = user.getKey();**
                            Toast.makeText(LoginActivity.this, key, Toast.LENGTH_SHORT).show();
                            Profiles profiles = user.getValue(Profiles.class);
                            if (profiles.getPassword().equals(password)) {
                                progressDialog.dismiss();
                                startActivity(new Intent(LoginActivity.this, MainActivity.class));
                            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...