gpt4 book ai didi

java - Firebase 身份验证 createUserWithEmailAndPassword 在具有电子邮件变量的物理设备上失败

转载 作者:行者123 更新时间:2023-11-30 05:08:06 26 4
gpt4 key购买 nike

使用 createUserWithEmailAndPassword 时有两个问题,

  1. 它可以在模拟器上运行,但不能在物理设备上以 Debug模式运行

  2. 为了让它在物理设备上运行,我可以为电子邮件部分硬编码一个字符串,即使它被保存到一个变量中。从 EditText 获取电子邮件时它会中断,但我已经使用 Log.d() 确认字符串在调用创建方法之前完全相同。

这行得通

    final String sEmail = "ExampleEmail@gmail.com";
final String sPassword = password.getText().toString();
final String sDisplayName = displayName.getText().toString();
Log.d("Credentials:Email", sEmail);
Log.d("Credentials:Password", sPassword);
mAuth.createUserWithEmailAndPassword(sEmail,sPassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
/*UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(sDisplayName).build();
user.updateProfile(profileUpdates);
mAuth.signOut();*/
Intent intent = new Intent(MainActivity.this,UserLogin.class);
startActivity(intent);

}else{
Toast creationFailed = Toast.makeText(getApplicationContext(),"Creation Failed", Toast.LENGTH_SHORT);
creationFailed.show();
}

}
});

这不是。

    final String sEmail = email.getText().toString();
final String sPassword = password.getText().toString();
final String sDisplayName = displayName.getText().toString();
Log.d("Credentials:Email", sEmail);
Log.d("Credentials:Password", sPassword);
mAuth.createUserWithEmailAndPassword(sEmail,sPassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
/*UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(sDisplayName).build();
user.updateProfile(profileUpdates);
mAuth.signOut();*/
Intent intent = new Intent(MainActivity.this,UserLogin.class);
startActivity(intent);

}else{
Toast creationFailed = Toast.makeText(getApplicationContext(),"Creation Failed", Toast.LENGTH_SHORT);
creationFailed.show();
}

}
});

这是错误信息

    2019-01-14 13:44:48.298 3217-16541/? E/Volley: [1455] BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?alt=proto&key=AIzaSyCTfahJaTfOSAOdY7_pIN27-BGQgFlORnE

请注意,出于某种原因,第二个不起作用的方法将在模拟设备上起作用。我希望第二个创建帐户,但它只是失败了。

最佳答案

我假设您输入的不是电子邮件类型。请记住,它需要电子邮件类型。

制作一个检查电子邮件有效的方法

   //Check email valid
boolean isEmailValid(CharSequence email) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

然后申请你的部分。

        //Check email valid
if (!isEmailValid(email.getText().toString())) {
email.setError("Not email type");
email.requestFocus();
return;
}

关于你的 toast ,也许你这样放会更好。这样,您就可以知道自己遇到了什么错误。

else {             
Toast.makeText(getApplicationContext(), "Fail: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}

关于java - Firebase 身份验证 createUserWithEmailAndPassword 在具有电子邮件变量的物理设备上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com