android - 如何在单个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);
}
}
});
解决方案
问题真的很简单,在去教师部门之前检查您是否已经登录。
如果是,那么尝试
FirebaseAuth.getInstance().signOut();
这将帮助您退出现有帐户并使用另一个教员帐户再次登录。
推荐阅读
- python - 为什么 Python 在 Visual Studio 中加载非常缓慢?
- javascript - Electron:如何捕获来自主进程的所有请求响应?
- java - 在 Spring Boot 中可分页
- python - 如何从 WTForms 中删除建议
- javascript - 使用 vue 根据元素 ui 树中的文件夹选择过滤文件
- r - 访问Rstudio中具有“useMethod(”packagefunction“)的函数的整个源代码?
- c++ - 在 C++ 中引用 string::string 中的任何字符
- delphi - 如何确定程序是否仅接受文件或文件列表作为参数?
- mongodb - 在构面内完成计数文档时返回空数组
- asp.net - 如何下载带有链接的 aspnetForm 页面