我可以使用 Firebase Admin SDK for Node 重置用户密码吗?
Posted
技术标签:
【中文标题】我可以使用 Firebase Admin SDK for Node 重置用户密码吗?【英文标题】:Can I reset a user's password using the Firebase Admin SDK for Node? 【发布时间】:2018-03-06 09:30:43 【问题描述】:Firebase 的文档建议 API 提供与控制台相同的功能:
访问 Firebase 控制台来管理您的 Firebase 用户并不总是很方便。管理员用户管理 API 为这些相同的用户提供编程访问。它甚至允许您执行 Firebase 控制台无法执行的操作,例如检索用户的完整数据以及更改用户的密码、电子邮件地址或电话号码。
但是参考文档没有列出重置用户密码的功能。我错过了什么吗?
【问题讨论】:
【参考方案1】:编辑:此答案现已过时,有关如何通过 Firebase SDK 发送密码重置链接,请参阅下面 Andrea 的答案。
这取决于您使用的“重置”的定义。
如果您的意思是“更改”中的重置,那么可以 - 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);
);
另一方面,如果您的意思是“发送密码重置电子邮件”中的重置,那么不,似乎没有通过 Admin SDK 执行此操作的简单方法。
【讨论】:
我很惊讶这个选项 - 以纯文本形式编辑密码 - 甚至在那里。对我来说,这似乎不是一个可信的重置场景,这就是为什么我认为我错过了一些东西,但我猜不是。 @OliverLloyd:是的,这似乎是一个奇怪的遗漏。 @OliverLloyd:跟进 - this question 的答案可能适合您的需求,因为标准客户端 API 允许您发送密码重置电子邮件。 @JoeClay 所以我认为在这种情况下,在存储密码之前加密/hashWithSalt 取决于我们,并且是良好的做法?我正在使用电话身份验证来登录我的用户,然后在电话验证成功后提示他们创建密码作为额外的安全级别。 我认为这会导致它在 Firebase 服务器上被双重哈希,这会阻止人们登录。但不确定!【参考方案2】:是的,你可以。要生成密码重置链接,您需要提供现有用户的电子邮件。然后,您可以使用任何您喜欢的电子邮件服务来发送实际的电子邮件。 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.
);
【讨论】:
以上是关于我可以使用 Firebase Admin SDK for Node 重置用户密码吗?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Cloud Storage Java Admin SDK 使用 contentType 上传文件
Firebase Admin SDK sendToTopic 不起作用
使用 node.js admin sdk 创建令牌时的 Firebase REST 身份验证