Firebase:如何重新认证经过身份验证的自定义用户?

时间:2018-07-24 12:35:05

标签: javascript firebase firebase-authentication

我已经成功实现了自定义身份验证系统(不是电子邮件和密码普通身份验证),如后端文档中所示:

服务器端:

authAdmin.auth().createCustomToken(uid)
 .then(customToken => {
   response.send({token: customToken});
}).catch(error => {
  console.log(error)
  response.status(500).send(error);
});

客户端:

let token = response.json().token;
firebase.auth().signInWithCustomToken(response.token).then(user => {
   // Code
}).catch(function(error) {
   console.log(error)
});

现在,我需要删除创建的帐户,并且由于该帐户需要重新进行身份验证才能删除,否则必须重新进行身份验证。 我检查了文档,发现了这一点:

currentUser.reauthenticateAndRetrieveDataWithCredential(credential).then(() => {
  // Delete user
  currentUser.delete().then(() => {
    // User deleted 
  });
});

但是此函数需要一个凭证对象。那么问题是如何从上面提供的自定义身份验证系统中创建凭据对象?

1 个答案:

答案 0 :(得分:0)

好的,这是您的操作方法。您需要另一个FirebaseApp。

var app2 = firebase.initializeApp(sameConfig, 'temp');
app2.auth().signInWithCustomToken(token).then(function(result) {
  // Confirm this is the same user as the default app.
  if (firebase.auth().currentUser.uid == result.user.uid) {
    // Overwrite the user in default instance.
    return firebase.auth().updateCurrentUser(result.user);
  }
  throw new Error('User mismatch!');
}).then(function() {
  // User reauthenticated. Remove temp user.
  app2.auth().signOut();
}).catch(function(error) {
  // Error occurred.
});