Java Firebase身份验证失败
我正在使用Firebase注册具有电子邮件和密码凭据的用户 我在活动中使用以下代码:Java Firebase身份验证失败,java,android,firebase-authentication,Java,Android,Firebase Authentication,我正在使用Firebase注册具有电子邮件和密码凭据的用户 我在活动中使用以下代码: public class SignUpPage extends AppCompatActivity { private TextView profile; private EditText screen, mail, pass; private Button knop; private Typeface tfc_button; FirebaseAuth firebase
public class SignUpPage extends AppCompatActivity {
private TextView profile;
private EditText screen, mail, pass;
private Button knop;
private Typeface tfc_button;
FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_sign_up_page);
setFontType();
screen = (EditText)findViewById(R.id.SchermNaam);
mail = (EditText)findViewById(R.id.PasWoord);
knop = (Button)findViewById(R.id.SignUp_Button_SignUp);
firebaseAuth = FirebaseAuth.getInstance();
}
public void setFontType(){
profile = (TextView) findViewById(R.id.GebruikersProfiel);
screen = (EditText) findViewById(R.id.SchermNaam);
mail = (EditText) findViewById(R.id.EmailAdres);
pass = (EditText) findViewById(R.id.PasWoord);
knop = (Button) findViewById(R.id.SignUp_Button_SignUp);
tfc_button = Typeface.createFromAsset(getAssets(), "fonts/TEMPSITC.TTF");
profile.setTypeface(tfc_button);
screen.setTypeface(tfc_button);
mail.setTypeface(tfc_button);
pass.setTypeface(tfc_button);
knop.setTypeface(tfc_button);
}
public boolean paswoord_ok (final String passw_check){
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "((?=.*\\d).{6,12})";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(passw_check);
return matcher.matches();
}
public boolean schermnaam_ok(final String scr_name_check){
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "(.{5,15})";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(scr_name_check);
return matcher.matches();
}
//Hoe ga je dit testen?
public void onClickSignUpPage(View view){
String schermnaam = screen.getText().toString().trim();
String emailadres = mail.getText().toString().trim();
String paswoord = pass.getText().toString().trim();
if(TextUtils.isEmpty(schermnaam)){
Toast.makeText(this,"Schermnaam invullen", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(emailadres)){
Toast.makeText(this,"Email invullen",Toast.LENGTH_SHORT).show();
return;
}
if(!schermnaam_ok(schermnaam)){
Toast.makeText(this,"schermnaam minstens 5 en maximum 15 tekens", Toast.LENGTH_SHORT).show();
return;
}
if(!paswoord_ok(paswoord)){
Toast.makeText(this,"paswoord tussen 6-12 karakters en minstens 1 cijfer", Toast.LENGTH_SHORT).show();
return;
}
firebaseAuth.createUserWithEmailAndPassword(emailadres.trim(),paswoord)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(SignUpPage.this, "Nieuwe Speler Geregistreerd", Toast.LENGTH_SHORT).show();
}
else {
FirebaseAuthException e = (FirebaseAuthException) task.getException();
Toast.makeText(SignUpPage.this,"Fout in de SignUp"+e.getMessage(), Toast.LENGTH_SHORT).show();
Log.d("LoginActivity", "Failed Registration", e);
return;
}
}
});
Intent intent = new Intent(this, SignInPage.class);
startActivity(intent);
}
}
检查任务是否成功的onCompletListener表示任务未成功。我收到的错误信息是:
注册失败com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:电子邮件地址格式错误
我已尝试将trim添加到emailadres.trim,但无法正常工作
有什么建议吗?我在分配电子邮件变量时使用了错误的视图。。请在此处更正代码
public class SignUpPage extends AppCompatActivity {
private TextView profile;
private EditText screen, mail, pass;
private Button knop;
private Typeface tfc_button;
FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_sign_up_page);
setFontType();
screen = (EditText)findViewById(R.id.SchermNaam);
mail = (EditText)findViewById(R.id.EmailAdres);
knop = (Button)findViewById(R.id.SignUp_Button_SignUp);
firebaseAuth = FirebaseAuth.getInstance();
}
public void setFontType(){
profile = (TextView) findViewById(R.id.GebruikersProfiel);
screen = (EditText) findViewById(R.id.SchermNaam);
mail = (EditText) findViewById(R.id.EmailAdres);
pass = (EditText) findViewById(R.id.PasWoord);
knop = (Button) findViewById(R.id.SignUp_Button_SignUp);
tfc_button = Typeface.createFromAsset(getAssets(), "fonts/TEMPSITC.TTF");
profile.setTypeface(tfc_button);
screen.setTypeface(tfc_button);
mail.setTypeface(tfc_button);
pass.setTypeface(tfc_button);
knop.setTypeface(tfc_button);
}
public boolean paswoord_ok (final String passw_check){
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "((?=.*\\d).{6,12})";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(passw_check);
return matcher.matches();
}
public boolean schermnaam_ok(final String scr_name_check){
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "(.{5,15})";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(scr_name_check);
return matcher.matches();
}
//Hoe ga je dit testen?
public void onClickSignUpPage(View view){
String schermnaam = screen.getText().toString().trim();
String emailadres = mail.getText().toString().trim();
String paswoord = pass.getText().toString().trim();
if(TextUtils.isEmpty(schermnaam)){
Toast.makeText(this,"Schermnaam invullen", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(emailadres)){
Toast.makeText(this,"Email invullen",Toast.LENGTH_SHORT).show();
return;
}
if(!schermnaam_ok(schermnaam)){
Toast.makeText(this,"schermnaam minstens 5 en maximum 15 tekens", Toast.LENGTH_SHORT).show();
return;
}
if(!paswoord_ok(paswoord)){
Toast.makeText(this,"paswoord tussen 6-12 karakters en minstens 1 cijfer", Toast.LENGTH_SHORT).show();
return;
}
firebaseAuth.createUserWithEmailAndPassword(emailadres.trim(),paswoord)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(SignUpPage.this, "Nieuwe Speler Geregistreerd", Toast.LENGTH_SHORT).show();
}
else {
FirebaseAuthException e = (FirebaseAuthException) task.getException();
Toast.makeText(SignUpPage.this,"Fout in de SignUp"+e.getMessage(), Toast.LENGTH_SHORT).show();
Log.d("LoginActivity", "Failed Registration", e);
return;
}
}
});
Intent intent = new Intent(this, SignInPage.class);
startActivity(intent);
}
}
为了减少我们必须进行的猜测,您是否可以打印emailadres.trim的值,然后查看当您将该值作为硬编码字符串(例如firebaseAuth)传递时,是否可以重现问题。createUserWithEmailAndPasswordniels@provider.com格海姆。如果你能用这种方式重现这个问题,我们知道它与你如何从用户界面中读取无关,可以忽略这部分代码。我已经把我的emailadres硬编码好了,这个功能……太棒了!这意味着对createUserWithEmailAndPassword的调用拒绝了一个看起来确实无效的电子邮件地址,问题必须在调用之前出现。我建议仔细检查您在输入框中实际输入的内容。如果这保证是正确的,请在mail.getText.toString.trim上的代码中放置一个断点,并从此处开始逐步执行,验证代码的每一步都是您认为应该执行的。我发现了错误。。这是在分配视图资源时发生的。。mail=EditTextfindViewByIdR.id.PasWoord;需要是mail=EditTextfindViewByIdR.id.EmailAddress;谢谢你的回应。很高兴听到你发现了问题,尼尔斯。我将投票以打字错误结束这个问题,因为同样情况下的人不太可能找到这个问题。