从Flatter应用程序创建多个Firebase Auth用户(从客户端)

从Flatter应用程序创建多个Firebase Auth用户(从客户端),firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我正在开发一款flutter firebase应用程序,它将同时适用于零售商和管理员用户。当零售商下载应用程序时,他/她必须提供电话号码验证详细信息和所有其他强制性详细信息,并且必须提交。管理员将获得请求,一旦管理员批准,零售商将能够登录并查看产品。如果零售商是应用程序的新手,管理应用程序还具有创建零售商的额外功能。管理员希望从他的应用程序中添加零售商,然后管理员应提供零售商的电话认证和所有其他零售商详细信息,以及需要在firebase中创建的用户 这里的问题是:管理员正在提供零售商的电话号码,

我正在开发一款flutter firebase应用程序,它将同时适用于零售商和管理员用户。当零售商下载应用程序时,他/她必须提供电话号码验证详细信息和所有其他强制性详细信息,并且必须提交。管理员将获得请求,一旦管理员批准,零售商将能够登录并查看产品。如果零售商是应用程序的新手,管理应用程序还具有创建零售商的额外功能。管理员希望从他的应用程序中添加零售商,然后管理员应提供零售商的电话认证和所有其他零售商详细信息,以及需要在firebase中创建的用户

这里的问题是:管理员正在提供零售商的电话号码,在提供OTP后,将创建零售商的用户,但在未注销的情况下关闭管理员应用程序后,如果打开管理员应用程序,则管理员应用程序将显示管理员最近创建的零售商详细信息,可能是因为缓存

我尝试在创建用户之后注销创建的用户,但找不到任何方法从应用程序注销特定用户

我希望能够从一个应用程序中创建多个firebase auth用户。

请在下面找到代码片段

String _userId = "";
  void _signInWithPhoneNumber() async {

    setState(() {
      _isLoading = true;
    });


    final AuthCredential credential1 = PhoneAuthProvider.getCredential(
      verificationId: _verificationId,
      smsCode: _smsCodeController.text,
    );
    try {
      final FirebaseUser user1 =
      (await db1.signInWithCredential(credential1));

      setState(() {
        _isLoading = false;
        _errorMessage = 'OTP verified Successfully !!';
        if (user1 != null) {
          print("Pranay Kumar value of newly created user  ${user1.uid}");
           db1.signOut();

          getCurrentUser().then((user) {
            setState(() {
              if (user != null) {
                _userId = user?.uid;
                print("Hello Pranay current Admin User $_userId");
              }
            });
          });

          print("Pranay Kumar value of newly created user  222  ${user1.uid}");
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) =>
                      CreateCustomerDetailedPage(
                          userId: user1.uid,
                          phoneNumber: _phoneNumberController.text)));

          //getUserDetails(user.uid);
        } else {
          _isLoading = false;
          _errorMessage = 'Sign in failed';
        }
      });
    } catch (e) {
      print('Error: $e');
      setState(() {
        _isLoading = false;
        _errorMessage = e.message;
      });
    }
  }

  Future<FirebaseUser> getCurrentUser() async {
    FirebaseUser user = await FirebaseAuth.instance.currentUser();
    return user;
  }
String_userId=”“;
void _signInWithPhoneNumber()异步{
设置状态(){
_isLoading=true;
});
final AuthCredential credential1=PhoneAuthProvider.getCredential(
验证ID:\u验证ID,
smsCode:_smsCodeController.text,
);
试一试{
最终FirebaseUser用户1=
(等待db1.使用凭证(凭证1)登录);
设置状态(){
_isLoading=false;
_errorMessage='OTP验证成功!!';
如果(user1!=null){
打印(“新创建的用户${user1.uid}的Pranay-Kumar值”);
db1.signOut();
getCurrentUser()。然后((用户){
设置状态(){
如果(用户!=null){
_userId=user?.uid;
打印(“Hello Pranay当前管理员用户$_userId”);
}
});
});
打印(“新创建的用户222${user1.uid}的Pranay-Kumar值”);
导航器。推(
上下文
材料路线(
生成器:(上下文)=>
CreateCustomerDetailedPage(
userId:user1.uid,
电话号码:_phoneNumberController.text));
//getUserDetails(user.uid);
}否则{
_isLoading=false;
_errorMessage='登录失败';
}
});
}捕获(e){
打印('Error:$e');
设置状态(){
_isLoading=false;
_errorMessage=e.message;
});
}
}
未来getCurrentUser()异步{
FirebaseUser=等待FirebaseAuth.instance.currentUser();
返回用户;
}

在新创建的print语句的用户值变为null后,我不希望“Hello Pranay current Admin user”

Firebase客户端SDK不支持此用例。虽然有人找到了一种变通方法,但恰恰是:变通方法。为了安全地创建用户,您应该使用AdminSDK,它需要在受信任的环境中运行。见弗兰克·范·帕夫伦——谢谢你的回复。我试着在颤振中解决问题,但仍在挣扎。有谁能帮助我,这个变通方法在颤振中是如何工作的吗?虽然我自己还没有在颤振中尝试过这个变通方法,但我检查了那里是否也有相关的API。如果您无法让它工作,请编辑您的问题以包含。我已经包含了代码片段。请提供帮助。您共享的代码绝不会像链接的问题那样创建第二个
FirebaseApp
FirebaseAuth
实例。