简体   繁体   English

身份验证后Firebase权限被拒绝

[英]Firebase Permission denied after auth

I am making an android application. 我正在制作一个Android应用程序。 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. 我首先使用电子邮件和密码登录用户,然后在OnComplete方法中,如果任务成功,我正在尝试访问数据库上的数据。 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: 您正在混合使用不同的Firebase SDK:

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

Signing in to the new SDK, will not authenticate the connection to the database made with the older SDK version. 登录新SDK不会验证与旧SDK版本建立的数据库的连接。 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 解决方案是在build.gradle文件中为所有Firebase库使用单个版本(9.x)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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