android - Firebase身份验证不成功android
问题描述
我正在使用 Andrid Studio 和 Firebase 使用电子邮件、姓名、地址和密码注册用户。当我单击向数据库注册用户时,它可能无法成功注册并转到任务不成功的 else 语句……
我已经通过firebase手动添加了登录电子邮件,但场景与用户没有登录的情况相同......
我很困惑,不知道我做错了什么......我正在关注教程,而我正在关注的教程也做了同样的事情......
这里是 M Sigup...
public class AdminSignUp extends AppCompatActivity {
TextView textLogin;
Button btnSignup;
EditText AdminId,EmailAdmin,AdminName,AdminPassword,PhoneNO,Address;
private ProgressDialog progressDialog;
private FirebaseAuth mAuth;
DatabaseReference databaseAdminRegistration;
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(AdminSignUp.this,MainActivity.class));
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_sign_up);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
textLogin=findViewById(R.id.txtLogin);
btnSignup=findViewById(R.id.ButtonAdminSignUp);
AdminId=findViewById(R.id.edtAdminId);
EmailAdmin=findViewById(R.id.admiemail);
AdminName=findViewById(R.id.edtAdminName);
AdminPassword=findViewById(R.id.edtAdminPassword);
PhoneNO=findViewById(R.id.edtAdminPhNo);
Address=findViewById(R.id.edtAdminAddress);
btnSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FunRegisterAdmin();
// Toast.makeText(AdminSignUp.this, "IN PROGRESS", Toast.LENGTH_SHORT).show();
}
});
textLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(AdminSignUp.this,AdminLogin.class));
}
});
}
private void FunRegisterAdmin()
{
String email = EmailAdmin.getText().toString().trim().toLowerCase();
String password = AdminPassword.getText().toString().trim();
final String name= AdminName.getText().toString().trim();
if (TextUtils.isEmpty(email)|| !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()){
EmailAdmin.setError("Please Enter a Valid Email");
return;
}
if (TextUtils.isEmpty(password)|| password.length() < 4 || password.length() > 10){
AdminPassword.setError("Enter The Password");
return;
}
if(TextUtils.isEmpty(name))
{
Toast.makeText(this,"Please Enter NAme",Toast.LENGTH_LONG).show();
return;
}
progressDialog.setMessage("Registering User...");
progressDialog.show();
mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
String id = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Employee");
reference.child(id).child("Name").setValue(name);
Toast.makeText(AdminSignUp.this, "Registered Successfully", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(AdminSignUp.this, "Not Registered...",Toast.LENGTH_LONG).show();
}
progressDialog.dismiss();
}
});
}
}
这是我的登录
public class AdminLogin extends AppCompatActivity {
TextView SignUPText;
EditText AdminEmail,AdminPassword;
Button AdminLoginBtn;
FirebaseAuth mAuth;
ProgressDialog progressDialog;
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(AdminLogin.this,MainActivity.class));
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin_login);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
SignUPText= findViewById(R.id.txtSignUp);
AdminEmail= findViewById(R.id.edtEmailAdminLogin);
AdminPassword= findViewById(R.id.edtPasswordAdminLogin);
AdminLoginBtn=findViewById(R.id.ButtonAdminLogin);
SignUPText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(AdminLogin.this,AdminSignUp.class));
}
});
AdminLoginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AdminLoginFunc();
//Toast.makeText(AdminLogin.this, "ADMIN LOGIN IN PROGRESS", Toast.LENGTH_SHORT).show();
}
});
}
private void AdminLoginFunc() {
String email = AdminEmail.getText().toString().trim().toLowerCase();
String password = AdminPassword.getText().toString().trim();
if (TextUtils.isEmpty(email)|| !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()){
AdminEmail.setError("enter a valid email address");
return;
}
if ((TextUtils.isEmpty(password)|| password.length() < 4 || password.length() > 10)){
AdminPassword.setError("enter a correct Password");
return;
}
progressDialog.setMessage("Please Wait...");
progressDialog.show();
mAuth.signInWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(AdminLogin.this, "Login Successfully", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(AdminLogin.this, "Unable to Login.",Toast.LENGTH_SHORT).show();
//updateUI(null);
}
progressDialog.dismiss();
}
});
}
}
解决方案
您应该尝试记录任务结果的值并查看失败的原因。
查看价值
task.getException().getMessage()
task.getException().getErrorCode()
您可以在此处查看错误代码 https://developers.google.com/android/reference/com/google/firebase/auth/FirebaseAuthInvalidUserException
还要确保您已从 firebase auth 管理仪表板启用 firebase 用户注册。
推荐阅读
- java - 扫雷游戏第一步踩雷怎么解决
- sql-server - ASP.NET Core MVC:使用 SQL Server 身份验证连接到现有数据库
- java - 包含 2 个带符号半字节到 2 个带符号整数的字节
- c# - 如何修复错误'InvalidArgument ='7'的值对'index'无效
- prolog - 使用 clpfd 生成闰年序列
- html - 使我的元素出现在垂直对齐的行中
- sony-audio-control-api - 使用 API 在 Bullt-in Chromecast 输入上设置“multiChStereo”和“2chStereo”声场
- c - gettimeofday() 没有填充它的 timeval 参数
- python-3.x - 使用列表和嵌套 for 循环对 3×3 矩阵进行转置
- sqlite - 如何在表中删除后更新某些元组