我想以" admin用户身份登录我的应用程序创建一个新用户帐户",问题是我只想创建它而不是实际登录。
是否可以在使用电子邮件/密码创建新用户时禁用自动登录。
我看到其他人已经问过与JS和swift有关的这个问题,但似乎无法找到任何特定于Android的相关信息。我试图实现与this person相同但与android
相同的事情任何帮助表示赞赏
答案 0 :(得分:9)
以下是您可以申请的经过测试的解决方案(仅在几分钟前实施)。
要创建新的用户帐户,您需要引用FirebaseAuth
。
因此,您可以创建两个不同的FirebaseAuth对象,例如:
private FirebaseAuth mAuth1;
private FirebaseAuth 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();
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实时数据库的帮助。只需添加一个类似&#34; is_user_admin
&#34;并从控制台本身将值设置为true
。您只需在有人尝试创建新用户帐户之前验证用户。使用这种方法,您可以设置自己的管理员。
到目前为止,我认为android没有firebase-admin SDK
。所以可以使用上述方法。