即使用户未登录,Firebase Auth getCurrent用户也会为!= null返回true!这里我只想在用户登录后更改意图

问题描述 投票:2回答:1
        import com.firebase.client.Firebase;
        import com.google.android.gms.tasks.OnCompleteListener;
        import com.google.android.gms.tasks.Task;
        import com.google.firebase.auth.AuthResult;
        import com.google.firebase.auth.FirebaseAuth;

        public class MainActivity extends AppCompatActivity {

            private ImageButton mSendata;
            private Firebase mRef; // database connection
            private FirebaseAuth mAuth;
            private TextView email;
            private TextView password;
            private FirebaseAuth.AuthStateListener mAuthListener;

            @Override
  //runs when activity created
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                mAuth = FirebaseAuth.getInstance();
                setContentView(R.layout.activity_main);
                email = (TextView) findViewById(R.id.email);
                password = (TextView) findViewById(R.id.password);
                mRef = new Firebase("https://notifyme-dfed3.firebaseio.com/");
                mSendata = (ImageButton) findViewById(R.id.imageButton);
    // Auth change method
                mAuthListener = new FirebaseAuth.AuthStateListener() {
                    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

//这里有问题--------------------------------------------- --------

                        if (firebaseAuth.getCurrentUser() != null) {

                            startActivity(new Intent(MainActivity.this, AccountActivity.class));
                        }


                    }


                };

// --------------------结束 - 请在评论中查看--------------------- ---------------------------

                mSendata.setOnClickListener(
                    new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            startSignIn(); //calls sign in method when user clicks button

                        }


                    });
            }

            protected void onStart() {
                super.onStart();
                mAuth.addAuthStateListener(mAuthListener);
            }

//此方法登录用户

            public void startSignIn() {


                String emails = email.getText().toString();/* gets user input*/
                String passwords = password.getText().toString();

//检查字段是否为空

                if (TextUtils.isEmpty(emails) || TextUtils.isEmpty(passwords)) {
                    Toast.makeText(MainActivity.this, "Fields are empty", Toast.LENGTH_LONG).show();


                } else {
                    mAuth.signInWithEmailAndPassword(emails, passwords).addOnCompleteListener(new OnCompleteListener < AuthResult > () {
                        @Override
                        public void onComplete(@NonNull Task < AuthResult > task) {                       /* if task not success show dialog

                            if (!task.isSuccessful()) {

                                Toast.makeText(MainActivity.this, "Sign in Problem", Toast.LENGTH_LONG).show();
                            }


                        }
                    });

                }
            }


        }// end of code
android firebase oauth firebase-authentication
1个回答
0
投票

在您的清单文件中添加以下内容在<manifest>标记中(最后)

xmlns:tools="http://schemas.android.com/tools"

然后在qazxsw poi标签(开头)

<application>

这是我遇到的一个问题,我已经回答了它tools:replace="android:allowBackup" android:allowBackup="false" android:fullBackupContent="false" ,但我在这里重新发布,以便这里的人们可以得到好处。正如@Doug Stevenson上面提到的firebase在手机上保存了一些数据,添加这些标签将确保不会发生这种情况......所以当您卸载应用程序并再次安装它时,它将清除与该应用程序关联的所有数据。

© www.soinside.com 2019 - 2024. All rights reserved.