作者:feloveyu | 来源:互联网 | 2023-02-12 21:13
我希望在以"管理员用户"身份登录时从我的应用程序创建一个新用户帐户,问题是我只想创建它而不是实际登录.
是否可以在使用电子邮件/密码创建新用户时禁用自动登录.
我看到其他人已经问过与JS和swift相关的这个问题,但似乎无法找到任何特定于Android的相关信息.我想尝试与这个人做同样的事情但是用android
任何帮助赞赏
1> Amit Upadhya..:
以下是您可以应用的测试解决方案(仅在几分钟前实施).
要创建新的用户帐户,您需要参考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() {
@Override
public void onComplete(@NonNull Task 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-admin SDK
Android.所以可以使用上述方法.