在 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;
}
}
},
我有一个 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;
}
}
},