我可以使用 Firebase Admin SDK for Node 重置用户密码吗?

Can I reset a user's password using the Firebase Admin SDK for Node?

Firebase 的文档建议 API 提供与控制台相同的功能:

It is not always convenient to have to visit the Firebase console in order to manage your Firebase users. The admin user management API provides programmatic access to those same users. It even allows you to do things the Firebase console cannot, such as retrieving a user's full data and changing a user's password, email address or phone number.

但是参考文档没有列出重置用户密码的功能。我错过了什么吗?

编辑:这个答案现在已经过时了,请参阅下面安德里亚的答案,了解如何通过 Firebase SDK 发送密码重置link。

这取决于您使用的 'reset' 的定义。

如果您的意思是 'change' 中的重置,那么是的 - the updateUser function 允许您提供新密码。请参阅文档中的以下示例:

admin.auth().updateUser(uid, {
  email: "modifiedUser@example.com",
  phoneNumber: "+11234567890",
  emailVerified: true,
  password: "newPassword",
  displayName: "Jane Doe",
  photoURL: "http://www.example.com/12345678/photo.png",
  disabled: true
})
  .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 updating user:", error);
  });

另一方面,如果您的意思是像 'send a password reset email' 中那样重置,那么不,似乎没有通过 Admin SDK 进行重置的简单方法。

是的,你可以。要生成密码重置 link,您需要提供现有用户的电子邮件。然后您可以使用您喜欢的任何电子邮件服务来发送实际的电子邮件。 Link to documentation.

// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
admin.auth().generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, displayName, link);
  })
.catch((error) => {
  // Some error occurred.
});