Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase createUserWithEmailAndPassword任务。isSuccessful()_Java_Android_Firebase_Firebase Authentication - Fatal编程技术网

Java Firebase createUserWithEmailAndPassword任务。isSuccessful()

Java Firebase createUserWithEmailAndPassword任务。isSuccessful(),java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,我正在创建一个Android应用程序,并正在实现登录/注册功能 我正处于注册活动在Firebase应用程序中成功创建用户条目的阶段,但是,我似乎无法跟踪任务是否成功 private void startRegister(){ 字符串email=mEmailField.getText().toString(); 字符串密码=mPasswordField.getText().toString(); 字符串confirmPassword=mConfirmPassword.getText().toSt

我正在创建一个Android应用程序,并正在实现登录/注册功能

我正处于注册活动在Firebase应用程序中成功创建用户条目的阶段,但是,我似乎无法跟踪任务是否成功

private void startRegister(){
字符串email=mEmailField.getText().toString();
字符串密码=mPasswordField.getText().toString();
字符串confirmPassword=mConfirmPassword.getText().toString();
//检查字段是否为空
if(TextUtils.isEmpty(电子邮件)| | TextUtils.isEmpty(密码)| | TextUtils.isEmpty(确认密码)){
Toast.makeText(Register.this,“电子邮件、密码或确认密码字段不能为空。”,Toast.LENGTH_LONG).show();
}如果(!password.equals(confirmPassword))则为else{
Toast.makeText(Register.this,“密码和确认密码应该匹配”,Toast.LENGTH_LONG.show();
}否则{
mAuth.createUserWithEmailAndPassword(电子邮件,密码).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(AuthResult AuthResult){
Toast.makeText(Register.this,“Success”,Toast.LENGTH_LONG.show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(Register.this,“Failure”,Toast.LENGTH_LONG.show();
}
});
}
}
两个如果!task.issusccessful()或其他块,但用户是在Firebase中创建的。你知道为什么我不能跟踪成功/如果失败了吗

相比之下:

这是在我的登录类工作

        mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if (!task.isSuccessful()) {
                    Toast.makeText(Login.this, "Credentials error, user may not exist.", Toast.LENGTH_LONG).show();
                }
            }
        });
mAuth.signwithEmailandPassword(电子邮件,密码)。addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
Toast.makeText(Login.this,“凭据错误,用户可能不存在。”,Toast.LENGTH_LONG.show();
}
}
});

很难说当前的实现方式是什么。 尝试直接添加onSuccess

mAuth.createUserWithEmailAndPassword(email, pass).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
        @Override
        public void onSuccess(AuthResult authResult) {
           //done
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            //display toast if registering failed
            ToastRect.failed(RegisterActivity.this, getString(R.string.app_activities_error_text) 
        }
   });
mAuth.createUserWithEmailAndPassword(email,pass).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(AuthResult AuthResult){
//完成
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//如果注册失败,则显示toast
ToastRect.failed(RegisterActivity.this,getString(R.string.app\u活动\u错误\u文本)
}
});
公共类寄存器扩展AppCompatActivity{
私有编辑文本mEmailField;
私有编辑文本mPasswordField;
私有EditText mConfirmPassword;
私人按钮注册按钮;
私人消防队;
私有FirebaseAuth.AuthStateListener mAuthListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FirebaseApp.initializeApp(本);
setContentView(R.layout.activity\u寄存器);
mEmailField=findviewbyd(R.id.registerEmailField);
mPasswordField=findviewbyd(R.id.registerPasswordField);
mConfirmPassword=findviewbyd(R.id.registerConfirmPassword);
mRegisterButton=findviewbyd(R.id.registerButton);
mAuth=FirebaseAuth.getInstance();
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
如果(firebaseAuth.getCurrentUser()!=null){
startActivity(新意图(Register.this、UploadActivity.class));
}
}
};
// https://stackoverflow.com/questions/10936042/how-to-open-layout-on-button-click-android
按钮寄存器=(按钮)findViewById(R.id.navigate\u\u登录);
register.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图){
Intent myIntent=newintent(view.getContext(),Login.class);
startActivityForResult(myIntent,0);
}
});
mRegisterButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startRegister();
}
});
}
@凌驾
受保护的void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
私有无效startRegister(){
字符串email=mEmailField.getText().toString();
字符串密码=mPasswordField.getText().toString();
字符串confirmPassword=mConfirmPassword.getText().toString();
//检查字段是否为空
if(TextUtils.isEmpty(电子邮件)| | TextUtils.isEmpty(密码)| | TextUtils.isEmpty(确认密码)){
Toast.makeText(Register.this,“电子邮件、密码或确认密码字段不能为空。”,Toast.LENGTH_LONG).show();
}如果(!password.equals(confirmPassword))则为else{
Toast.makeText(Register.this,“密码和确认密码应该匹配”,Toast.LENGTH_LONG.show();
}否则{
mAuth.createUserWithEmailAndPassword(电子邮件,密码).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(AuthResult AuthResult){
Toast.makeText(Register.this,“Success”,Toast.LENGTH_LONG.show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(Register.this,“Failure”,Toast.LENGTH_LONG.show();
}
});
}
}
}

以确认FirebaseAuth.AuthStateListener()已启动。这是来自my Login类的错误复制和粘贴作业。这将阻止我处理成功的用户创建。

然后,修复看起来像:
mAuth.createUserWithEmailAndPassword(email, pass).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
        @Override
        public void onSuccess(AuthResult authResult) {
           //done
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            //display toast if registering failed
            ToastRect.failed(RegisterActivity.this, getString(R.string.app_activities_error_text) 
        }
   });
public class Register extends AppCompatActivity {

private EditText mEmailField;
private EditText mPasswordField;
private EditText mConfirmPassword;
private Button mRegisterButton;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_register);

    mEmailField = findViewById(R.id.registerEmailField);
    mPasswordField = findViewById(R.id.registerPasswordField);
    mConfirmPassword = findViewById(R.id.registerConfirmPassword);
    mRegisterButton = findViewById(R.id.registerButton);
    mAuth = FirebaseAuth.getInstance();


    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

            if (firebaseAuth.getCurrentUser() != null) {
                 startActivity(new Intent(Register.this, UploadActivity.class));
            }
        }
    };

    // https://stackoverflow.com/questions/10936042/how-to-open-layout-on-button-click-android
    Button register = (Button) findViewById(R.id.navigate_to_login);
    register.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Login.class);
            startActivityForResult(myIntent, 0);
        }
    });

    mRegisterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startRegister();
        }
    });
}

@Override
protected void onStart() {
    super.onStart();

    mAuth.addAuthStateListener(mAuthListener);
}

private void startRegister() {
    String email = mEmailField.getText().toString();
    String password = mPasswordField.getText().toString();
    String confirmPassword = mConfirmPassword.getText().toString();

    // Check that fields are not empty
    if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(confirmPassword)) {

        Toast.makeText(Register.this, "Email, password or confirm password field cannot be empty.", Toast.LENGTH_LONG).show();
    } else if (!password.equals(confirmPassword)) {

        Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();
    } else {

        mAuth.createUserWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {

                Toast.makeText(Register.this, "Success", Toast.LENGTH_LONG).show();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

                Toast.makeText(Register.this, "Failure", Toast.LENGTH_LONG).show();
            }
        });
    }
}
public class Register extends AppCompatActivity {

private EditText mEmailField;
private EditText mPasswordField;
private EditText mConfirmPassword;
private Button mRegisterButton;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseApp.initializeApp(this);
    setContentView(R.layout.activity_register);

    mEmailField = findViewById(R.id.registerEmailField);
    mPasswordField = findViewById(R.id.registerPasswordField);
    mConfirmPassword = findViewById(R.id.registerConfirmPassword);
    mRegisterButton = findViewById(R.id.registerButton);
    mAuth = FirebaseAuth.getInstance();


    // https://stackoverflow.com/questions/10936042/how-to-open-layout-on-button-click-android
    Button register = (Button) findViewById(R.id.navigate_to_login);
    register.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Login.class);
            startActivityForResult(myIntent, 0);
        }
    });

    mRegisterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startRegister();
        }
    });
}

@Override
protected void onStart() {
    super.onStart();
}

private void startRegister() {
    String email = mEmailField.getText().toString();
    String password = mPasswordField.getText().toString();
    String confirmPassword = mConfirmPassword.getText().toString();

    // Check that fields are not empty
    if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password) || TextUtils.isEmpty(confirmPassword)) {

        Toast.makeText(Register.this, "Email, password or confirm password field cannot be empty.", Toast.LENGTH_LONG).show();
    } else if (!password.equals(confirmPassword)) {

        Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();
    } else {

        mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {

                    Toast.makeText(Register.this, "Password and confirm password should match", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}