在 firebase 中删除用户帐户

Delete user account in firebase

我有一个 flutter 应用程序,用户有一个电子邮件和密码(帐户),我想让用户选择删除他们的帐户,如果他们愿意,问题是我的代码有时只删除身份验证有时它会删除信息和身份验证(就像我想要的那样)所以我不知道为什么有时有效有时无效

代码如下:

 onPressed: () async {
                        //delete user
                        current!.delete();
                        await FirebaseAuth.instance.signOut();
                        //delete user info in the database
                        var delete = await FirebaseFirestore.instance
                            .collection('users')
                            .doc(uid)
                            .delete();
                        //go to sign up log in page
                        await Navigator.pushNamed(context, '/');
                      },
                    )
                  ]).show();

这就是本页中的部分代码,谢谢。

你没有给出任何调试细节,所以很难帮助你。

但是我们可以看到您在 调用 delete() 方法之前 注销,因此如果删除用户配置文件只允许经过身份验证的用户(通过你的安全规则)你应该会遇到错误。

您应该尝试先调用 delete() 然后注销用户。

我找到了解决办法!! 这是有效的代码

onPressed: () async {
                        bool step1 = true ;
                        bool step2 = false ;
                        bool step3 = false ;
                        bool step4 = false ;
                        while(true){

                          if(step1){
                            //delete user info in the database
                              var delete = await FirebaseFirestore.instance
                                  .collection('users')
                                  .doc(uid)
                                  .delete();
                              step1 = false;
                              step2 = true;
                          }

                          if(step2){
                            //delete user
                            current!.delete();
                            step2 = false ;
                            step3 = true;
                          }

                          if(step3){
                            await FirebaseAuth.instance.signOut();
                            step3 = false;
                            step4 = true ;

                          }

                          if(step4){
                            //go to sign up log in page
                            await Navigator.pushNamed(context, '/');
                            step4 = false ;
                          }

                          if(!step1 && !step2 && !step3 && !step4 ) {
                            break;
                          }

                        }





                      },