Невозможно записать в базу данных Firebase в реальном времени, но работает нормально - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь создать нового дочернего элемента под дочерним элементом iamit, который является идентификатором вновь созданного пользователя. Он регистрирует пользователя для Аутентификации, но не для БД в реальном времени, которая остается такой же, как она есть. Иерархия: Users-> iamit-> userID

Я не вижу, что не так, я следовал рекомендациям Google, и это должно работать. У меня есть ".read": правда, ".write": правда в правилах.

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


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;

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


public class confirmineed extends Activity {
 public static final String TAG = "TAG";
 String firstname,lastname,number,emailtxt,psw, userID;


 FirebaseAuth fAuth;
 ProgressBar progressBar;
 FirebaseFirestore fStore;
 FirebaseDatabase database;
 Button signupbtn;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_confirmineed);
     Bundle bundle = getIntent().getExtras();
     assert bundle != null;

     firstname = bundle.getString("firstname");
     lastname = bundle.getString("lastname");
     number = bundle.getString("Pnumber");
     emailtxt = bundle.getString("email");
     psw = bundle.getString("psw");


     TextView name = (TextView) findViewById(R.id.name);
     final TextView pnumber = (TextView) findViewById(R.id.pnumber);
     TextView email = (TextView) findViewById(R.id.email);
     TextView role = (TextView) findViewById(R.id.role);
     name.setText(firstname + " " + lastname);
     pnumber.setText(number);
     email.setText(emailtxt);
     role.setText("I provide I.T. Support");


     signupbtn = findViewById(R.id.signupbtn);
     fAuth = FirebaseAuth.getInstance();
     fStore = FirebaseFirestore.getInstance();
     database = FirebaseDatabase.getInstance();
     progressBar = findViewById(R.id.progressBar2);
     progressBar.setVisibility(View.GONE);

     signupbtn.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {

             progressBar.setVisibility(View.VISIBLE);
             // register the user in firebase

             fAuth.createUserWithEmailAndPassword(emailtxt,psw).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

                 @Override
                 public void onComplete(@NonNull Task<AuthResult> task) {

                     if(task.isSuccessful()){
                         userID = fAuth.getCurrentUser().getUid();
                         Toast.makeText(confirmineed.this, "User Created." + userID, Toast.LENGTH_SHORT).show();

                         DocumentReference documentReference = fStore.collection("users").document(userID);
                         Map<String,Object> user = new HashMap<>();
                         documentReference.set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
                             @Override
                             public void onSuccess(Void aVoid) {

                                 String user_id = fAuth.getCurrentUser().getUid();
                                 DatabaseReference myref = database.getReference().child("Users").child("iamit").child(user_id);
                                 myref.setValue(true);

                                 Log.d(TAG, "onSuccess: user Profile is created for "+ userID);

                             }
                         }).addOnFailureListener(new OnFailureListener() {
                             @Override
                             public void onFailure(@NonNull Exception e) {
                                 Log.d(TAG, "onFailure: " + e.toString());
                             }
                         });
                         startActivity(new Intent(getApplicationContext(),iamitlogin.class));

                     }else {
                         Toast.makeText(confirmineed.this, "Error ! " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                         progressBar.setVisibility(View.GONE);
                     }
                 }
             });
         }


     });


 }


 public void onBackPressed(View view){
     Intent sendback = new Intent(this, signupend.class);
     sendback.putExtra("firstname", firstname);
     sendback.putExtra("lastname", lastname);
     sendback.putExtra("Pnumber", number);
     sendback.putExtra("email", emailtxt);
     sendback.putExtra("psw", psw);
     startActivity(sendback);
     overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
 };


}

1 Ответ

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

Поместите DatabaseReference myref = database.getReference().child("Users").child("iamit").child(user_id); myref.setValue("true"); из преемслистера. Вы помещаете это в раздел чтения

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