Firebase无需登录即可创建用户

RoR*_*o88 8 android firebase firebase-authentication

我希望在以"管理员用户"身份登录时从我的应用程序创建一个新用户帐户,问题是我只想创建它而不是实际登录.

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

我看到其他人已经问过与JS和swift相关的这个问题,但似乎无法找到任何特定于Android的相关信息.我想尝试与这个人做同样的事情但是用android

任何帮助赞赏

Ami*_*yay 10

以下是您可以应用的测试解决方案(仅在几分钟前实施).

要创建新的用户帐户,您需要参考FirebaseAuth.

因此,您可以创建两个不同的FirebaseAuth对象,例如:

private FirebaseAuth mAuth1;
private FirebaseAuth mAuth2;
Run Code Online (Sandbox Code Playgroud)

现在在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
}
Run Code Online (Sandbox Code Playgroud)

要获取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();
                        }



                        // ...
                    }
                });

    }
Run Code Online (Sandbox Code Playgroud)

你必须担心的事实(实际上不是):

管理员应该只能创建新的用户帐户.但上述解决方案允许所有经过身份验证的用户创建新的用户帐户.

因此,要解决此问题,您可以获取firebase实时数据库的帮助.只需添加一个像" is_user_admin" 这样的键,并true从控制台本身设置值.您只需在有人尝试创建新用户帐户之前验证用户.使用这种方法,您可以设置自己的管理员.

截至目前,我认为没有firebase-admin SDKAndroid.所以可以使用上述方法.