Firebase用户删除无法正常工作

时间:2016-09-22 08:59:20

标签: javascript firebase react-native firebase-authentication

我正在关注最新版本的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 }

没有发出错误。

注意:这是一个反应原生的应用程序。

2 个答案:

答案 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)

要删除用户,用户必须最近登录。