在admin用户登录的情况下使用createUserWithEmailAndPassword创建用户会将当前用户更改为firebase

时间:2017-10-04 03:50:22

标签: android firebase

所以,在我的Android应用程序中,我创建了一个管理员用户,通过它我可以在firebase中创建新用户。但问题是当我在当前用户是admin用户时创建新用户时,它会自动将当前用户更改为新创建的用户。当我退出该应用程序并重新启动时,它会生效。因此,在此期间,它始终使用新用户登录。 (即使我再次重新启动,我也使用逻辑来保持对用户的登录。所以我不必再次登录)

所以,我的问题是如何在管理员用户登录时创建新用户,并仍然以admin用户身份保留当前用户。我试图查看firebase官方文档和其他一些资源,但我找不到正确的解决方案。谁能给我一些建议?谢谢。

1 个答案:

答案 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();
        }
     }
});