简体   繁体   中英

Firebase Permission denied after auth

I am making an android application. I first login the user with email and password and then in OnComplete method,if the task is successful, I am trying to access data on the database. But every time I get the message Listen at / failed.

My Main Activity code is as follows -

private FirebaseAuth auth;
private EditText inputEmail, inputPassword;
private Button btnLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Firebase.setAndroidContext(this);
    //Get Firebase auth instance
    auth = FirebaseAuth.getInstance();

    if (auth.getCurrentUser() != null) {
        startActivity(new Intent(MainActivity.this, MainActivity.class));
        finish();
    }

    setContentView(R.layout.activity_main);
    inputEmail = (EditText) findViewById(R.id.txtMobile);
    inputPassword = (EditText) findViewById(R.id.txtPassword);
    btnLogin = (Button) findViewById(R.id.btnLogin);

    auth = FirebaseAuth.getInstance();


    btnLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = inputEmail.getText().toString();
            final String password = inputPassword.getText().toString();


            //authenticate user
            auth.signInWithEmailAndPassword(email, password)
                    .addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            // If sign in fails, display a message to the user. If sign in succeeds
                            // the auth state listener will be notified and logic to handle the
                            // signed in user can be handled in the listener.
                            if (!task.isSuccessful()) {
                                // there was an error
                                Log.e("Invalid","Invalid");

                            } else {
                                /*Intent intent = new Intent(MainActivity.this, Second.class);
                                startActivity(intent);
                                finish();*/
                                Firebase.getDefaultConfig();

                                auth = FirebaseAuth.getInstance();

                                if (auth.getCurrentUser() != null) {
                                    Log.e("awesome",auth.getCurrentUser().getEmail());
                                }

                                Firebase firebase = new Firebase("https://test-fd3f2.firebaseio.com");
                                firebase.addChildEventListener(new ChildEventListener() {
                                    // Retrieve new posts as they are added to Firebase
                                    @SuppressWarnings("unchecked")
                                    @Override
                                    public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
                                        if(snapshot.getValue()!= null) {
                                            String mobileNum = snapshot.getValue().toString();
                                            Log.e("here", mobileNum);
                                        }
                                        //Log.e("Title: ",newPost.get("password").toString());
                                    }

                                    @Override
                                    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                                    }

                                    @Override
                                    public void onChildRemoved(DataSnapshot dataSnapshot) {

                                    }

                                    @Override
                                    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                                    }

                                    @Override
                                    public void onCancelled(FirebaseError firebaseError) {
                                        Log.e("Cancel",firebaseError.getCode()+"");
                                        Log.e("Cancel",firebaseError.getDetails());
                                        Log.e("Cancel",firebaseError.getMessage());
                                    }
                                    //... ChildEventListener also defines onChildChanged, onChildRemoved,
                                    //    onChildMoved and onCanceled, covered in later sections.
                                });
                            }
                        }
                    });
        }
    });


}

UPDATE - My firebase rules is as follows-

        {
         "rules": {
         ".read": "auth != null",
         ".write": "auth != null"
          }
         }

You're mixing different Firebase SDKs:

  • auth.signInWithEmailAndPassword() is from the new 3.x/9.x Firebase SDK
  • new Firebase() is from the Firebase 2.x SDK

Signing in to the new SDK, will not authenticate the connection to the database made with the older SDK version. So your database connection is still unauthenticated.

The solution is to use a single version (9.x) for all Firebase libraries in your build.gradle file

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM