首页 > 解决方案 > 如何在单个android项目中使用firebase的两种singin和singup方法

问题描述

我正在创建一个大学应用程序,其中我为学生设置了两个部分,第二个部分用于教师。学生和教师都使用身份验证电子邮件和密码方法。问题是,当我从学生部分登录并最小化应用程序,然后清除任务并重新打开应用程序时,应用程序将从头开始,如果我正在点击教师部分,那么即使我没有登录,我也已经登录了通过本节。

如何解决这个问题?

mAuth.signInWithEmailAndPassword(user_email,user_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isSuccessful())
                {
                   FirebaseUser  authentic_user=mAuth.getCurrentUser();
                   if(authentic_user.isEmailVerified()) {
                       String user_id = mAuth.getCurrentUser().getUid();
                       database = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);
                       database.addValueEventListener(new ValueEventListener() {
                           @Override
                           public void onDataChange(DataSnapshot dataSnapshot) {
                               try {
                                   email_check = dataSnapshot.child("email").getValue().toString();
                               } catch (NullPointerException error) {
                                   email_check = null;
                               }

                               if (email_check != null) {
                                   email.setText(email_check);
                                   Intent intent = new Intent(getApplicationContext(), StudentDashboard.class);
                                   startActivity(intent);
                                   student_login_progress.setVisibility(View.INVISIBLE);
                               } else {
                                   student_login_progress.setVisibility(View.INVISIBLE);
                                   Toast.makeText(getApplicationContext(), "Invalid Username and Password", Toast.LENGTH_LONG).show();
                                   FirebaseAuth.getInstance().signOut();
                                   finish();
                               }
                           }

                           @Override
                           public void onCancelled(DatabaseError databaseError) {

                           }
                       });
                   }else
                   {
                       startActivity(new Intent(getApplicationContext(),Student_Email_Verification.class));
                       student_login_progress.setVisibility(View.INVISIBLE);
                   }


                }else
                {
                    Toast.makeText(Login_Student.this,task.getException().getMessage(),Toast.LENGTH_LONG).show();
                    student_login_progress.setVisibility(View.GONE);
                }
            }
        });

标签: androidfirebasefirebase-authentication

解决方案


问题真的很简单,在去教师部门之前检查您是否已经登录。

如果是,那么尝试

FirebaseAuth.getInstance().signOut();

这将帮助您退出现有帐户并使用另一个教员帐户再次登录。


推荐阅读