如何使用 Firebase Admin Node JS SDK 取消电子邮件与 Firebase 的链接

How to unlink Email from Firebase using Firebase Admin Node JS SDK

我正在尝试取消电子邮件与当前用户的链接,该用户有一个 Phone 号码和电子邮件已经链接到它。

这是我的工作:

admin.auth().updateUser("user uid", {
  email: null,  
  password: null,
})
.then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully updated user', userRecord.toJSON());       
})
.catch(function(error) {
    console.log('Error removing email:', error); 
});

但返回错误 The email address is improperly formatted.

出于某种原因,只有当我删除电子邮件时才会发生这种情况,当我为 phone 做同样的事情时它的工作:

admin.auth().updateUser("user uid", { 
  phoneNumber: null,
})
.then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully updated user', userRecord.toJSON());       
})
.catch(function(error) {
    console.log('Error removing phone number:', error); 
});

以上代码有效,phone 被完美删除。但只有当我对电子邮件执行此操作时才会发生错误。

有什么想念的吗?

UpdateRequest#email 必须是 undefined 或有效的电子邮件地址。

UpdateRequest#password 必须是 undefined 或未经哈希处理的密码。

您或许可以使用:

admin.auth().updateUser("user uid", {
  email: undefined,  
  password: undefined,
})

但是 unlinking 客户端上的 EmailAuthProvider 凭据通常更好。

firebase.auth().currentUser
  .unlink(firebase.auth.EmailAuthProvider.PROVIDER_ID);

您可以使用 admin sdk 取消链接供应商 using the providersToUnlink

await auth.updateUser(user.uid, {
  providersToUnlink: ['password'],
})