0

我正在關注最新版本的Firebase Google Web SDK。從登錄到登錄和註銷都可以正常工作。我想讓用戶刪除他們自己的帳戶,並按照firebase.User類的API參考。另外我閱讀了關於managing users的文檔。Firebase用戶刪除不起作用

這是我使用的代碼:

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

您似乎缺少對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,在響應說,這將會是太長時間,因爲我在簽訂的身體。重新驗證並再次嘗試後,我得到:

刪除成功?

+0

這段代碼的行爲方式與上面描述的相同。我忽略了原因。 – jsdario

+0

感謝您的努力,我會重試 - 希望以前我錯了。由於這是一個react-native項目,所以在不透明的API上可能會出現細微的差異(例如:內部使用Promise以不同的方式解析,或者'fetch' vs'XmlHttpRequest'。我目前正在使用'onAuthStateChange'的解決方法。 – jsdario

0

要刪除用戶,用戶必須最近登錄。

+0

情況是這樣,否則應該拋出指示這樣做的錯誤,而不是僅僅解決的承諾。對? – jsdario