2017-02-04 76 views
5

我想从我的应用程序创建一个新的用户帐户为“管理员用户”,问题是,我只是想创建它实际上没有登录登录时。火力地堡无符号创建用户

是使用电子邮件/密码创建新用户时可以禁用自动登录。

我看到别人已经问过这个问题,关于JS和SWIFT,但似乎无法找到任何Android特定的相关信息。我试图做到同样的事情,但this person与Android

任何帮助赞赏

+0

请参阅http://stackoverflow.com/a/38013551/209103 –

回答

3

这里是一个测试的解决方案,你可以申请(之前只是实施了几分钟)。

要创建新的用户帐户,您需要参考FirebaseAuth。在OnCreate

private FirebaseAuth mAuth1; 
private FirebaseAuth mAuth2; 

现在你可以初始化它们为:

所以你可以创建一个像两个不同的FirebaseAuth对象

@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 
} 

要获得专案编号,的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实时数据库。只需添加一个如“is_user_admin”的密钥并将其值从控制台本身设置为true即可。您只需在用户尝试创建新用户帐户之前验证用户。使用这种方法你可以设置你自己的管理员。

截至目前,我认为没有firebase-admin SDK为Android。所以可以使用上面的方法。

+0

我很感谢您的回复,但这并不能解决我的问题,这会将用户从系统中注销,并且他们需要重新登录管理员,我希望保持以管理员用户身份登录并创建新的AC,管理员用户可能正在创建多个帐户,因此每次登录后都不能登录并重新登录 – RoRo88

+0

@ RoRo88:在测试后更新了我的答案。现在这将解决您的问题 –