Android 获得;FirebaseApp名称AnyAppName已存在“;在未登录的情况下创建用户时
我希望管理员创建用户。但这将是在客户端,因为将有许多管理员,我不希望有那么多人访问我的firebase控制台。这就是我不想使用Firebase Admin SDK的原因 我找了很多地方,找到了这个。下面是代码: 因此,您可以创建两个不同的FirebaseAuth对象,如: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
私有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中再次初始化应用程序之前,是否可以尝试检查该应用程序是否存在?(类似)这正是为什么在尝试创建它(再次)之前,您应该检查它是否存在的原因。如果你不知道如何结账或者