Firebase signInWithEmailAndPassword提供“com.google.firebase.auth not found”

时间:2016-09-22 18:44:52

标签: android firebase firebase-authentication

我正在使用firebase作为我的android工作室的baackend。并且还可以通过firebase控制台提供eatch和每一步。我创建了3个Activity的

  1. MainActivity
  2. LoginActivity
  3. RigisterActivity
  4. 我能够成功注册用户但是当我尝试使用电子邮件和密码登录用户时,任务没有成功。下面是我的代码

    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) {
    
                }
            });
        }
    
    
                    @
    

2 个答案:

答案 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