【问题标题】:Create a Firebase Authentication account for another user为其他用户创建 Firebase 身份验证帐户
【发布时间】:2020-12-08 02:40:13
【问题描述】:

我有一个 Flutter 应用程序,管理员可以在其中为其他用户创建帐户(使用 Firebase Authentication)。

我的逻辑类似如下:

UserCredential userCredential =
  await authService.instance.createUserWithEmailAndPassword(
  email: emailController.text,
  password: passwordController.text,
);

main.dart:

MaterialApp(
      home: StreamBuilder<User>(
        stream: authentcationService.authStateChanges,
        builder: (context, snapshot) {
          // Build the app
          // ...
        },
       )
)

但是我注意到这会触发上述stream 中的身份验证状态更改:调用createUserWithEmailAndPassword 正在注销当前用户并登录新创建的用户,而不是简单地在 Firebase 身份验证中创建新用户.谁能给点建议?

【问题讨论】:

    标签: firebase flutter firebase-authentication


    【解决方案1】:

    根据我的经验,当您创建用户时,它会自动让他们同时登录,而不管注册方法如何。即使您立即退出,登录的用户仍然会改变。

    也许你可以实现一个云功能来创建一个用户?(如果可以的话?)或者你可以保存正确的/admin用户名密码并在创建时自动注销新创建的帐户并重新登录到admin帐户?

    示例:(开始以创建帐户的管理员身份登录)(伪代码)

    _createNewUserAsAdmin(email, password){
     var adminPass = SharedPreferences.adminPass;
     var adminEmail = SharedPreferences.adminEmail;
    
    _auth.logout();
    
     var newUser= _auth.createUser(email, password);
     if(newUser == null){} //error creating user (user object is null), handle error and log back into admin
     else{
      _auth.logout()(
      _auth.signIn(adminEmail, adminPass);
     }
    }
    

    您可能必须更改您的流/身份验证应用程序包装器才能处理此活动。

    编辑: 这个答案有一个更深入的解决方案: https://stackoverflow.com/a/38013551/13714686

    就个人而言,我会研究通过 Firebase 云功能创建新用户,这对您来说似乎是最简单的设置。 Firebase 还可以选择从文件创建用户,如果您希望管理员批量添加用户,您可以查看更多文件(尽管我认为此功能适用于命令行工具)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2021-12-04
      • 2020-01-05
      • 1970-01-01
      • 2011-07-19
      • 2014-05-14
      相关资源
      最近更新 更多