Firebase无需登录即可创建用户[重复]

Posted

技术标签:

【中文标题】Firebase无需登录即可创建用户[重复]【英文标题】:Firebase create user without sign in [duplicate] 【发布时间】:2017-06-21 18:07:59 【问题描述】:

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

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

我看到其他人就 JS 和 swift 提出了这个问题,但似乎找不到任何 android 特定的相关信息。我正在尝试实现与 this person 相同的目标,但使用 android

任何帮助表示赞赏

【问题讨论】:

见***.com/a/38013551/209103 【参考方案1】:

这是您可以应用的经过测试的解决方案(几分钟前刚刚实施)。

要创建新用户帐户,您需要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 实时数据库。只需添加一个像“is_user_admin”这样的键,然后从控制台本身将值设置为true。您只需要在有人尝试创建新用户帐户之前验证用户。使用这种方法,您可以设置自己的管理员。

截至目前,我认为安卓没有firebase-admin SDK。所以可以使用上述方法。

【讨论】:

感谢您的回复,但这并不能解决我的问题,这会使用户退出系统,他们需要以管理员身份再次登录,我希望保持登录身份admin 用户并创建新的 AC,admin 用户可能会创建许多帐户,因此每次登录后注销并重新登录是不切实际的 @RoRo88 :测试后更新了我的答案。现在这将解决您的问题

以上是关于Firebase无需登录即可创建用户[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用firebase创建新用户时如何避免自动登录[重复]

创建 Firebase 登录并且不要更改 FirebaseAuth [重复]

Firebase Auth 为同一电子邮件创建重复用户

无需用户登录即可保护 Spring Boot 应用程序

无需登录即可访问api-gateway,然后创建帐户并进行授权

如何防止 Firebase 中出现重复的用户属性?