Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获得;FirebaseApp名称AnyAppName已存在“;在未登录的情况下创建用户时_Android_Firebase_Firebase Authentication - Fatal编程技术网

Android 获得;FirebaseApp名称AnyAppName已存在“;在未登录的情况下创建用户时

Android 获得;FirebaseApp名称AnyAppName已存在“;在未登录的情况下创建用户时,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我希望管理员创建用户。但这将是在客户端,因为将有许多管理员,我不希望有那么多人访问我的firebase控制台。这就是我不想使用Firebase Admin SDK的原因 我找了很多地方,找到了这个。下面是代码: 因此,您可以创建两个不同的FirebaseAuth对象,如: 私有FirebaseAuth mAuth1; 私人消防基地AUTH MAUTH 2 现在,在onCreate中,您可以将它们初始化为: @Override protected void onCreate(Bundle

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

我找了很多地方,找到了这个。下面是代码:

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

私有FirebaseAuth mAuth1;
私人消防基地AUTH MAUTH 2

现在,在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
。成功注册后,您可以注销该
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();
                        }



                        // ...
                    }
                });

    }
private void createAccount(字符串电子邮件、字符串密码)
{
mAuth2.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
字符串ex=task.getException().toString();
Toast.makeText(RegisterActivity.this,“注册失败”+ex,
Toast.LENGTH_LONG).show();
}
其他的
{
Toast.makeText(RegisterActivity.this,“注册成功”,
吐司。长度(短)。show();
mAuth2.注销();
}
// ...
}
});
}

但在这里,我只能创建一次用户。在那之后,我无法再次重新打开该活动。它显示“FirebaseApp名称AnyAppName已存在!”。

而不是简单地初始化。这样做:

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

我认为你应该重新措辞你的问题。您当前的问题将得到以下答案。但在你的最后一行中,你说你实际上可以做到,但你有一个不同的问题。这就是你想要的:是的,我以前就看到过你的答案。但我想要Java版本的。在你的回答中也可以看到吉米的评论。他必须添加
secondaryApp.delete()。但是在Java中,解决方法是什么?如果我看一下我链接的另一个问题,我认为你不必删除它。在oncreate中再次初始化应用程序之前,是否可以尝试检查该应用程序是否存在?(类似)这正是为什么在尝试创建它(再次)之前,您应该检查它是否存在的原因。如果你不知道如何结账或者