我正在使用firebase作为我的android工作室的baackend。并且还可以通过firebase控制台提供eatch和每一步。我创建了3个Activity的
我能够成功注册用户但是当我尝试使用电子邮件和密码登录用户时,任务没有成功。下面是我的代码
Android监视器出现以下错误
W / DynamiteModule:找不到com.google.firebase.auth的本地模块描述符类。
登录活动
private EditText mLoginEmailField;
private EditText mloginPassField;
private Button mLoginbtn;
private Button mNewAccountbtn;
private DatabaseReference mDatabaseRefrence;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAuth = FirebaseAuth.getInstance();
mLoginEmailField = (EditText) findViewById(R.id.loginEmailField);
mloginPassField = (EditText) findViewById(R.id.loginPasswordField);
mLoginbtn = (Button) findViewById(R.id.loginBtn);
mNewAccountbtn = (Button) findViewById(R.id.newAccountbtn);
mDatabaseRefrence = FirebaseDatabase.getInstance().getReference().child("Users");
mNewAccountbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent rigisterIntent = new Intent(LoginActivity.this,RegisterActivity.class);
rigisterIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(rigisterIntent);
}
});
mLoginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckLogin();
}
});
}
private void CheckLogin() {
String email = mloginPassField.getText().toString().trim();
String pass = mloginPassField.getText().toString().trim();
if(!TextUtils.isEmpty(email) && !TextUtils.isEmpty(pass)){
mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
CheackUserExsists();
}else{
Toast.makeText(LoginActivity.this,"Erorr Login",Toast.LENGTH_LONG).show();
}
}
});
}
}
private void CheackUserExsists() {
final String user_id = mAuth.getCurrentUser().getUid();
mDatabaseRefrence.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild(user_id)){
Intent MainIntent = new Intent(LoginActivity.this,MainActivity.class);
MainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(MainIntent);
}else
{
Toast.makeText(LoginActivity.this,"You need to setup your Account.. ",Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@
答案 0 :(得分:1)
修改您的onComplete()
方法以记录登录失败的原因:
mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
CheackUserExsists();
}else{
Log.e(TAG, "Sign-in Failed: " + task.getException().getMessage());
// Or if you don't use Log:
// System.out.println("Sign-in Failed: " + task.getException().getMessage());
Toast.makeText(LoginActivity.this,"Erorr Login",Toast.LENGTH_LONG).show();
}
}
});
失败的可能原因是:
关于
的警告信息找不到com.google.firebase.auth的本地模块描述符类。
并不重要,也不是登录失败的原因。
答案 1 :(得分:0)
该错误是由于android找不到firebase auth的依赖项。转到应用程序的gradle.build文件并插入依赖项。例如
dependencies {
...
implementation 'com.google.firebase:firebase-auth:x.x.x'
}
而不是x.x.x
添加所需的版本。
有关更多信息,请访问以下资源:https://firebase.google.com/docs/auth/android/password-auth。