Firebase创建的用户无需登录

时间:2017-02-04 11:51:32

标签: android firebase firebase-authentication

我想以" admin用户身份登录我的应用程序创建一个新用户帐户",问题是我只想创建它而不是实际登录。

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

我看到其他人已经问过与JS和swift有关的这个问题,但似乎无法找到任何特定于Android的相关信息。我试图实现与this person相同但与android

相同的事情

任何帮助表示赞赏

1 个答案:

答案 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。所以可以使用上述方法。