根据文档,我需要重新尝试尝试删除其帐户但一段时间未登录的用户。这是doc(非常底部):
文档
如果您执行以下操作之一,并且用户登录时间过长 之前,操作失败并显示错误。当这个情况发生时, 通过从以下位置获取新的登录凭据来重新验证用户 用户并传递凭据以进行reauthenticateWithCredential
var user = firebase.auth().currentUser;
var credential;
// Prompt the user to re-provide their sign-in credentials
user.reauthenticateAndRetrieveDataWithCredential(credential).then(function() {
// User re-authenticated.
})
凭据?
我的问题是从用户部分获取新的登录凭据。凭据变量应该具有什么值?根据{{3}}的说法,它应该执行:
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
我的问题:电子邮件和密码来自哪里?由于我使用的是 GoogleSignInAuth ,因此可以使用firebase.auth().currentUser.email
来检索电子邮件,因此它看起来像这样:
var user = firebase.auth().currentUser;
let credential = firebase.auth.GoogleAuthProvider.credential(firebase.auth().currentUser.email);
user.reauthenticateAndRetrieveDataWithCredential(credential).then(() => {
// User re-authenticated.
});
但是我遇到一个错误:
{“错误”:{“代码”:400,[{”消息”:“无法解析Google id_token:qmnofficial@gmail.com“,” domain“:” global“,” reason“:” invalid“}]}}
请帮助。
答案 0 :(得分:0)
您的问题是您正尝试使用电子邮件地址来检索Google凭据,这是不可能的。
let credential = firebase.auth.GoogleAuthProvider.credential(firebase.auth().currentUser.email);
根据文档
credential(idToken,accessToken)返回firebase.auth.OAuthCredential
为Google创建凭据。 ID令牌和访问权限中的至少一项 令牌是必需的。
var credential = firebase.auth.GoogleAuthProvider.credential(id_token);
或
var credential = firebase.auth.GoogleAuthProvider.credential(null,access_token);
对于您的用例,请按以下步骤操作
firebase.auth().currentUser.reauthenticateWithPopup(
new firebase.auth.GoogleAuthProvider()).then(function(userCredential) {
// You can now delete the user:
return firebase.auth().currentUser.delete();
}).catch(function(error) {
// Credential mismatch or some other error.
}
);
希望有帮助。