我正在关注最新版本的Firebase Google Web SDK。从登录到注册和退出的一切工作都很好。我想让用户删除自己的帐户,并遵循firebase.User
类的API参考。我还阅读了他们关于managing users的文档。
这是我使用的代码:
function deleteAccount () {
console.log('delete account!!')
const auth = firebase.auth()
console.log({auth})
auth.delete().then(function () {
console.log('delete successful?')
const user = firebase.auth().currentUser
console.log({user})
store.dispatch(forgetUser())
routerReset('GetStarted')
}).catch(function (error) {
console.log({error})
// An error happened.
})
}
函数delete
似乎可以从firebase.Auth
对象起作用并解析承诺。如果对signOut
执行相同操作,则日志会显示未定义的对象,但是在此处:
console.log({user}) // { user: Firebase.User object }
没有发出错误。
注意:这是一个反应原生的应用程序。
答案 0 :(得分:3)
您似乎缺少对currentUser
的引用。
来自Firebase documentation on deleting a user:
您可以使用
delete
方法删除用户帐户。例如:var user = firebase.auth().currentUser; user.delete().then(function() { // User deleted. }, function(error) { // An error happened. });
重要:要删除用户,用户必须最近已登录。请参阅重新验证用户身份。
如上所述,您的代码并未引用currentUser
。我不确定在auth object本身上调用delete
的是什么。
更新:我刚刚运行此操作来验证行为:
firebase.auth().currentUser.delete().then(function () {
console.log('delete successful?')
console.log(app.auth().currentUser)
}).catch(function (error) {
console.error({error})
})
起初我得到了400,回复的主体说自从我登录以来已经太久了。在重新认证并再次尝试之后,我得到了:
删除成功?
空
答案 1 :(得分:1)
要删除用户,用户必须最近登录。