我在Android Studio中创建了一个应用程序,除了其他几个字段外,用户还使用电子邮件和密码进行了注册。这是我正在使用的代码:
公共类MainActivity扩展了AppCompatActivity {
EditText etName, etService, etDes, etCost, etContact, etPass, etEmail;
Button offer;
CountryCodePicker ccp;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etName = findViewById(R.id.enterName);
etService = findViewById(R.id.enterService);
etDes = findViewById(R.id.enterDescription);
etCost = findViewById(R.id.enterCost);
etContact = findViewById(R.id.enterContact);
etPass = findViewById(R.id.enterPassword);
etEmail = findViewById(R.id.enterEmail);
ccp = findViewById(R.id.ccpLogin);
ccp.registerCarrierNumberEditText(etContact);
offer = findViewById(R.id.offerBtn);
mAuth=FirebaseAuth.getInstance();
offer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String putEmail=etEmail.getText().toString();
final String putPass=etPass.getText().toString();
//final String fullNumber = ccp.getFullNumberWithPlus();
//final String key=fullNumber+putEmail;
if(notEmpty()){
mAuth.createUserWithEmailAndPassword(putEmail, putPass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful())
{
final String putName=etName.getText().toString();
final String putService=etService.getText().toString();
final String putDes=etDes.getText().toString();
final String putCost=etCost.getText().toString();
final String putEmail=etEmail.getText().toString();
final String putPass=etPass.getText().toString();
final String fullNumber = ccp.getFullNumberWithPlus();
sendVerificationEmail();
//checkVerification(putName,putService,putDes,putCost,fullNumber,putPass,putEmail);
}
else
Toast.makeText(MainActivity.this, "Failed to send EMail", Toast.LENGTH_LONG).show();
}
});
}
else
Toast.makeText(MainActivity.this, "All Fields Are Required", Toast.LENGTH_LONG).show();
}
});
}
现在我的问题是,有什么方法可以阻止用户注册而无需先验证其电子邮件ID? createUserWithEmailAndPassword()方法似乎在验证用户的电子邮件ID之前先登录用户,我认为这违背了使用电子邮件验证的目的,即阻止用户使用伪造或无效的电子邮件ID进入数据库。如果用户尚未验证自己的电子邮件ID,那么似乎还无法从Firebase的“身份验证”下的“用户”部分删除该用户,因为此时他已经被创建并登录。
答案 0 :(得分:0)
您可以使用FirebaseUI。它负责登录UI,登录过程,并为您提供了处理电子邮件验证的机会,请查看有关如何进行FirebaseUI电子邮件验证的问题:
Email verification for Firebase Auth UIFirebaseUI
在FirebaseUI上试用演示应用