Почему мой java-код не отправляет данные в firebase?

Итак, я создаю приложение для Android, которое добавляет пользователей в базу данных Firebase из формы внутри действия регистрации.

Я создаю это в Android Studio 3 и уже запускаю его на своем HTC One M9.

package com.example.mobilniproekt;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.google.firebase.FirebaseApp;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.HashMap;
import java.util.Map;

public class RegisterActivity extends AppCompatActivity {

    private DatabaseReference databaseReference;

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

        Button button=(Button) findViewById(R.id.register);
        databaseReference= FirebaseDatabase.getInstance().getReference("users");
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText name=(EditText) findViewById(R.id.name);
                EditText lastname=(EditText) findViewById(R.id.lastname);
                EditText city=(EditText) findViewById(R.id.city);
                EditText email=(EditText) findViewById(R.id.email);
                EditText username=(EditText) findViewById(R.id.username);
                EditText password=(EditText) findViewById(R.id.password);

                String id=databaseReference.push().getKey();
                User user=new User(id, name.getText().toString(), lastname.getText().toString(), city.getText().toString(), email.getText().toString(), username.getText().toString(), password.getText().toString());

                databaseReference.child(id).setValue(user);

                name.setText("");
            }
        });
    }
}

Однако, когда я запускаю приложение, заполняю форму и проверяю свою базу данных, данных нет.

Я неправильно реализую код или есть другая проблема с конфигурацией Firebase?

Попробуйте добавить полный слушатель и зарегистрируйте сообщение. Что вы получаете?

Alex Mamo 26.01.2019 11:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
216
2

Ответы 2

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

mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                   FirebaseUser user = mAuth.getCurrentUser();
                } else {
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });

Или, если у них уже есть учетная запись, им необходимо сначала войти в систему со своими данными.

mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                } 
                 else {
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                    Toast.LENGTH_SHORT).show();
                }
            }
        });

Затем вы можете отправить в firebase любые данные для записи

Я предполагаю, что в параметрах электронной почты и пароля я указал адрес электронной почты и пароль своей учетной записи Google, верно?

David Mason 26.01.2019 00:56

Это зависит от того, что вы делаете. Из данных в вашей форме кажется, что вы собираете данные для каждого пользователя, поэтому в идеале логин будет иметь адрес электронной почты и пароль пользователя, поэтому вам необходимо использовать адрес электронной почты и пароль из этой формы или отдельную форму для регистрации сначала, до вам, это создаст учетную запись для пользователя, которая поможет вам позже, кто имеет доступ к каким частям базы данных

Mocas 26.01.2019 01:12

Обновлен ответ

Mocas 26.01.2019 01:16

Спасибо за помощь. Однако я должен упомянуть, что у меня отключена аутентификация для моей базы данных, поэтому я не думаю, что это вызывает проблему.

David Mason 26.01.2019 01:23

Хорошо. В этом случае вам может потребоваться проверить, разрешен ли вашему приложению доступ к базе данных. Если вы перейдете к консоли Firebase, вы должны увидеть маленького дроида в левом нижнем углу вашего проекта.

Mocas 26.01.2019 01:35

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

Mocas 26.01.2019 01:39

Да, он разрешил доступ

David Mason 26.01.2019 02:01

Проверьте, разрешен ли вашему приложению доступ к вашей firebase

Другие вопросы по теме