所以,在我的Android应用程序中,我创建了一个管理员用户,通过它我可以在firebase中创建新用户。但问题是当我在当前用户是admin用户时创建新用户时,它会自动将当前用户更改为新创建的用户。当我退出该应用程序并重新启动时,它会生效。因此,在此期间,它始终使用新用户登录。 (即使我再次重新启动,我也使用逻辑来保持对用户的登录。所以我不必再次登录)。
所以,我的问题是如何在管理员用户登录时创建新用户,并仍然以admin用户身份保留当前用户。我试图查看firebase官方文档和其他一些资源,但我找不到正确的解决方案。谁能给我一些建议?谢谢。
答案 0 :(得分:0)
每个。这是我的一个老问题。我看到,截至检查该问题的时间,它有41个视图,并且没有提供此问题的答案。因此,我想到回答自己的问题,因为其他人可能会遇到与我将来相同的问题。
实际上,我可以通过一些技巧解决此问题。我所做的是,管理员用户创建新用户并自动对新用户进行身份验证后,我只是使用
将该用户注销mAuth.signOut();
此后,我调用signInWithEmailAndPassword
,并将管理用户的电子邮件和密码作为方法中的参数。然后,即使我重新启动该应用程序,这也可以使我登录到管理员用户。我知道这可能不是最好的方法。但这对我有用。如果有更好的方法,请告诉我。我乐于知识和学习。 :)
//create user
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(NewStudentActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (task.isSuccessful()) {
Toast.makeText(NewStudentActivity.this, "User added Successfully", Toast.LENGTH_SHORT).show();
mAuth.signOut();
mAuth.signInWithEmailAndPassword("admin_email@gmail.com", "admin_password").addOnCompleteListener(NewStudentActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//admin sign in again
}
});
} else {
Toast.makeText(NewStudentActivity.this, "Authentication failed." + task.getException(),Toast.LENGTH_SHORT).show();
}
}
});