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

在创建用户而不登录时获取“FirebaseApp名称AnyAppName已存在”

楚知
2023-03-14

我希望管理员创建用户。但这将是在客户端,因为会有很多管理员,我不想让那么多人访问我的Firebase控制台。这就是为什么我不想使用Firebase管理SDK。

我找了很多地方,找到了这个。下面是html" target="_blank">代码:

因此,您可以创建两个不同的Firebase Auth对象,例如:

私有Firebase Auth mAuth1;私有Firebase Auth mAuth2;

现在,在onCreate中,您可以将它们初始化为:

@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();

        FirebaseApp myApp = FirebaseApp.initializeApp(getApplicationContext(),firebaseOptions,
                "AnyAppName");

        mAuth2 = FirebaseAuth.getInstance(myApp);
//..... other code here
}

要获取ProjectID、WebAPI密钥,您可以转到Firebase项目控制台中的项目设置。

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

例子:

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 App name AnyAppName已存在!”。

共有1个答案

凌远
2023-03-14

而不是简单地初始化。执行以下操作:

 try { FirebaseApp app = FirebaseApp.initializeApp(getApplicationContext(), firebaseOptions, "AnyAppName");
            mAuth2 = FirebaseAuth.getInstance(app);
        } catch (IllegalStateException e){
            mAuth2 = FirebaseAuth.getInstance(FirebaseApp.getInstance("AnyAppName"));
        }
 类似资料:
  • 我遇到了一个与Firebase和JavaEE有关的问题。 我目前正在为我的项目编写一些Java servlet,我第一次使用Firebase是因为我想尝试一些新的东西。 我的实际问题如下:我得到了一个servlet,负责在用户数据库中交换iOS设备令牌。这是向设备发送远程推送通知所必需的。我在谷歌教程中也这样做过,但我得到了以下例外: 我访问Firebase数据库的方式是通过Java SDK。 我

  • 问题内容: 如何获取Java中的用户名/登录名? 这是我尝试过的代码… 我在尝试运行此代码时得到提示。有人可以告诉我我是否朝着正确的方向前进,并帮助我理解问题。 问题答案:

  • 当使用电子邮件/密码创建新用户时,是否可能禁用自动登录。 我看到其他人问这个问题与JS和swift有关,但似乎找不到任何具体的android相关信息。我试图实现与这个人一样的事情,但用android 感谢任何帮助

  • 在您按下信息提交后,我尝试显示一条消息。 1.此名称已经存在,请使用另一个 或 2。名字加上去了! html php 现在,它将回声发布在add.php上,而不是表单所在的页面上。我怎么把它送到那里?

  • 问题内容: 我需要输入USER表的USER_ID字段作为另一个表中的外键。因此,我认为我需要在用户登录时启动一个会话。我很难让它在任何地方回显。我能够启动一个会话,该会话允许我回显USERNAME,但无法将其复制为ID。 请帮忙吗?我的处理代码如下。我还粘贴了本节,我暂时尝试对其进行回显以进行测试。 处理脚本: 我希望USER_ID出现在哪里: 问题答案: 使用FETCH_ASSOC而不是FETC

  • 我在Dreamweaver的帮助下创建了这个登录页面,并希望使其用户名字段必须与SQL数据库中的用户名匹配才能创建密码。我不太熟悉这一点,也不确定我需要做什么来要求一个现有的用户名,然后向数据库中的用户名行添加密码。 以下是Dreamweaver创建的php代码:与数据库的连接已经存在,因此我知道下面的代码中不存在该连接。这就像一个正常的注册页面一样好用,但我不希望任何人都能注册。