我正在尝试在成功注册用户后发送验证邮件。这给了我错误An internal error has occurred. [ USER_NOT_FOUND ]
。这是我目前的代码 -
public void signUpUser(View view){
EditText mailEditText = (EditText) findViewById(R.id.editText);
EditText pwdEditTet = (EditText) findViewById(R.id.editText2);
String email = mailEditText.getText().toString();
String password = pwdEditTet.getText().toString();
Log.d("Info",email);
Log.d("Info",password);
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
try {
AuthResult result = task.getResult();
Log.d("Sign up", "createUserWithEmail:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(MainActivity.this, R.string.auth_failed,
Toast.LENGTH_SHORT).show();
}else{
Log.d("Sign up", "Sending verification email");
// Sending the verification email
//FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
mAuth.getCurrentUser().sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("Email Sent", "Verification Email sent.");
}else{
Log.d("Email Sent",task.getException().getLocalizedMessage());
}
}
});
}
} catch (Exception e){
Toast.makeText(MainActivity.this,R.string.user_exist,Toast.LENGTH_SHORT).show();
Log.e("Exception",e.getLocalizedMessage());
}
}
});
}
这是打印的日志 -
10-11 10:10:50.372 31518-31518/au.com.savedme D/Sign up: Sending verification email
10-11 10:10:51.438 31518-31518/au.com.savedme D/Email Sent: An internal error has occurred. [ USER_NOT_FOUND ]
10-11 10:11:00.429 31518-31538/au.com.savedme W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
如果我在这里做错了什么,请看看并告诉我。
答案 0 :(得分:1)
我遇到了同样的问题。我发现,mAuth.getCurrentUser()。sendEmailVerification()在mAuth.createUserWithEmailAndPassword(电子邮件,密码)方法中不起作用。 我在createUserWithEmailAndPassword(电子邮件,密码)方法之外写了代码,然后我收到了验证邮件。奇怪。
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
if(user!=null){
user.sendEmailVerification().addOnCompleteListener(MainActivity.this,new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.i("Success","Yes");
}
else {
Log.i("Success","No"+task.getException());
}
}
});
}
答案 1 :(得分:1)
我也有同样的问题,我之后发现的原因是,如果您使用已创建的相同用户尝试此代码,然后将其从firebase控制台中删除,则无法使用。
尝试使用您未尝试过一次的新电子邮件地址,它会起作用。
请注意createUserWithEmailAndPassword()不仅会创建用户, 而且,如果成功,则签署用户。当创建和 当有现有登录用户时,会出现登录 成为与注销和清除缓存相关的Firebase错误 上一个用户。
我能够使您的代码适用于以前登录过的版本 之前通过调用signOut()删除了用户
createUserWithEmailAndPassword()
。
答案 2 :(得分:0)
您确定在控制台中启用了电子邮件/密码身份验证吗?如果没有,您可以转到https://console.firebase.google.com并点击您的项目,点击&#39;验证&#39;然后按“登录方法”,点击笔图标启用它。希望这有帮助!