Не удается записать в базу данных Firebase от прослушивателя успеха Auth - PullRequest
0 голосов
/ 27 ноября 2018

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

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");

Он работает, если я пишу его просто по методу onCreate действия, но когда я пишу его внутриСлушатель успеха аутентификации, учетная запись регистрируется, но сообщение не записывается в базу данных:

// [START sign_in_with_email]
mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {

                    // Write a message to the database
                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference myRef = database.getReference("message");
                    myRef.setValue("Hello, World!");

                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
          //rest of code 
}

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Кажется, что ваши правила firebase разрешают запись, когда вы не аутентифицированы

Шаг 1: Перейдите на https://console.firebase.google.com/project/[projectname]/database/[projectname]/rules

Шаг 2: Разрешите доступ к базе данных, вставив следующий код

{

"rules": {
    ".read": true,
    ".write": true
  }
}

Шаг 3. Публикация

Код делает вашу базу данных общедоступной, оставлять ее не рекомендуется, и вам следует обеспечить ее безопасность после завершения тестирования и разработки.

0 голосов
/ 27 ноября 2018

Существуют определенные шаги для использования базы данных Firebase в Android.

Включение аутентификации по идентификатору электронной почты и паролю в консоли Firebase

Регистрация электронной почты и пароля из кода

ссправка

firebaseAuth.createUserWithEmailAndPassword(txt_email, txt_password)
            .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
                        assert firebaseUser != null;
                        String UserId = firebaseUser.getUid();

}

Используйте Hashmap для установки значения.

и войдите в систему, используя этот код

    private void login(String txt_email, String txt_password) {
    firebaseAuth.signInWithEmailAndPassword(txt_email,txt_password)
            .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()){
                        Intent intent = new Intent(SignIn.this,MainActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                        hideProgressDialog();
                        startActivity(intent);
                        finish();
                    }
                    else{
                        String error = Objects.requireNonNull(task.getException()).getMessage();
                        hideProgressDialog();
                        Toast.makeText(SignIn.this, error, Toast.LENGTH_SHORT).show();
                       // Toast.makeText(SignIn.this, "Authentication Failed", Toast.LENGTH_SHORT).show();
                    }
                }
            });
}

public void showProgressDialog() {
    if (mProgressDialog == null) {
        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setMessage(getString(R.string.loading));
        mProgressDialog.setIndeterminate(true);
        mProgressDialog.setCancelable(false);
    }
    mProgressDialog.show();
}

public void hideProgressDialog() {
    if (mProgressDialog != null && mProgressDialog.isShowing()) {
        mProgressDialog.dismiss();
    }
}

Если у вас есть дальнейшие сомнения.пожалуйста, дайте мне знать

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