Java Firebase createUserWithEmailAndPassword任务。isSuccessful()
我正在创建一个Android应用程序,并正在实现登录/注册功能 我正处于注册活动在Firebase应用程序中成功创建用户条目的阶段,但是,我似乎无法跟踪任务是否成功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
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();
}
}
});
}
}