微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在服务器端将 firebase oobCode 解码给用户

如何解决在服务器端将 firebase oobCode 解码给用户

自定义电子邮件流以及如何在后端解码用户方面存在一些问题。

查看流程:

用户:(网络应用)

  1. 输入电子邮件地址并发送密码重置请求

服务器:

  1. 使用 nodeJS SDK 生成 oobCode:admin.auth().generatePasswordResetLink(email);

  2. 自定义电子邮件中的链接发送给用户

用户:(网络应用)

  1. 点击链接 -> www.example.com?oobCode=XYZ
  2. 客户端 SDK 验证的令牌尚未过期:firebase.auth().verifyPasswordResetCode("XYZ");
  3. 如果有效,将 oobCode 和新密码发送回服务器

现在出现问题的地方

我已将新密码和 oobCode 发送回服务器,以下是所需的功能

服务器: 1.验证 oobCode 并获取用户 uid

我看不到任何方法可以在后端对其进行解码以验证用户我如何从后端的此代码获取用户?似乎我们可以生成但不能解码

解决方法

尝试运行此代码以验证密码重置的 oobCode:

const passResetUrl = `https://identitytoolkit.googleapis.com/v1/accounts:resetPassword?key=${firebaseWebApiKey}`
return fetch(passResetUrl,{ method: 'POST',body: JSON.stringify({ "oobCode": oobCode,newPassword: "newpass" }),headers: { "Content-Type": "application/json" } }).then(async (res) => {
  const resJson = await res.json()
  //const email = resJson.email
  console.log(resJson)
  return "ok"
}).catch((errVerifyingCode) => {
  console.log(errVerifyingCode)
  return "error"
})

firebaseWebApiKey 可以在您的网络应用的 Firebase 配置中找到。

如果通过解码您的意思是获取用户身份验证对象,那么我认为这是不可能的。考虑在生成的 url 中添加某种查询参数,以帮助您的服务器识别用户。

如果您在服务器上验证 oob 代码而不是使用如上所示的 Firebase Client SDK,您将收到用户的电子邮件回复。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。