当前位置: 首页 > 知识库问答 >
问题:

Firebase创建用户而不登录[副本]

松波
2023-03-14

当使用电子邮件/密码创建新用户时,是否可能禁用自动登录。

我看到其他人问这个问题与JS和swift有关,但似乎找不到任何具体的android相关信息。我试图实现与这个人一样的事情,但用android

感谢任何帮助

共有1个答案

章盛
2023-03-14

下面是您可以应用的经过测试的解决方案(几分钟前刚刚实现)。

要创建新的用户帐户,需要引用FirebaseAuth

因此可以创建两个不同的FirebaseAuth对象,如下所示:

private FirebaseAuth mAuth1;
private FirebaseAuth mAuth2;
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        mAuth1 = FirebaseAuth.getInstance();

        FirebaseOptions firebaseOptions = new FirebaseOptions.Builder()
                .setDatabaseUrl("[Database_url_here]")
                .setApiKey("Web_API_KEY_HERE")
                .setApplicationId("PROJECT_ID_HERE").build();

       try { FirebaseApp myApp = FirebaseApp.initializeApp(getApplicationContext(), firebaseOptions, "AnyAppName");
        mAuth2 = FirebaseAuth.getInstance(myApp);
    } catch (IllegalStateException e){
        mAuth2 = FirebaseAuth.getInstance(FirebaseApp.getInstance("AnyAppName"));
    }

//..... other code here
}

要获得ProjectID,WebAPI密钥,可以转到firebase项目控制台的项目设置。

现在,要创建用户帐户,您必须使用mAuth2,而不是mauth1。然后在注册成功时,您可以注销该mAuth2用户。

示例:

private void createAccount(String email, String password)
    {
        mAuth2.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {


                        if (!task.isSuccessful()) {
                            String ex = task.getException().toString();
                            Toast.makeText(RegisterActivity.this, "Registration Failed"+ex,
                                    Toast.LENGTH_LONG).show();
                        }
                        else
                        {
                            Toast.makeText(RegisterActivity.this, "Registration successful",
                                    Toast.LENGTH_SHORT).show();
                            mAuth2.signOut();
                        }



                        // ...
                    }
                });

    }

你必须担心的一点(实际上不是):

管理员应该只能创建新的用户帐户。但是上述解决方案允许所有经过身份验证的用户创建一个新的用户帐户。

因此,要解决这个问题,可以借助firebase实时数据库。只需添加一个键,如“is_user_admin”,并从控制台本身将该值设置为true。您只需要在某人试图创建新的用户帐户之前验证该用户。使用这种方法,您可以设置自己的管理员。

 类似资料:
  • 在我正在进行的一个项目中,我们使用了firebase Auth。 我找到了同样问题的答案,但在尝试实现后,它仍然不起作用(也许答案已经过时了?)。我正在使用firestore,而不是实时,以防相关。 这是我的代码:

  • 我是新来的。 我目前正在开发一个应用程序,使用Vue.jsFirebase身份验证、Firebase实时数据库和Firebase云功能作为后端。应用程序必须包含一个管理员帐户的功能之一,该帐户可以为其他人创建帐户。创建后,新用户会收到一封电子邮件,其中包含登录名和登录密码。 因为注册方法(https://firebase.google.com/docs/auth/web/password-auth

  • 我是Firebase的新手。最近,我试图将用户保存到Firebase中,但我做不到。当我生成APK并将其运行到真实设备(而不是模拟器)上时,新用户不会将其添加到Firebase中。此外,没有显示任何错误。任务正确执行并转到OTPActivity。这是我的完整代码: 公共无效保存用户(){ 请帮帮我。提前谢谢。

  • 在没有密码创建新Firebase用户的情况下,用户是否可以只使用他们的电子邮件地址登录(传递一个空/空字符串作为密码)?或者当用户auth对象中没有指定密码时,Firebase会拒绝所有使用电子邮件+密码进行身份验证的尝试吗? Firebase Admin SDK文档清楚地表明,是的可选属性,但是密码身份验证文档似乎没有指定在没有密码的情况下创建用户时Firebase的行为。是否可以通过保留和/或

  • 我正在开发一个企业应用程序,管理员在其中创建新用户(没有注册表单)。我正在使用Firebase Auth,它在很多方面都很棒,但我在我的用例中遇到了一个问题。当您使用时,由此创建的用户将自动登录。当管理员创建用户帐户时,这显然不起作用。有没有办法避免这种行为?谢了。

  • 瞄准 允许不同类型的用户登录到各自的接口 描述 null 每个用户通过Firebase身份验证电子邮件注册 每个用户应该能够作为每个接口访问他们各自的接口,如果不同的话 每个用户都已经与各自的子节点一起保存在Firebase数据库中。例如,在“users”下面有一个“school”,在这个“school”下面是用户类型,如“student”、“parent”和“teacher”。 可视化数据库 用