为 Node.js 客户端应用程序保留 Firebase 用户

chr*_*sen 5 node.js firebase firebase-authentication

我正在使用 Firebase 构建 Node.js 命令行界面 (CLI),以进行后端身份验证。我想避免让用户每次运行命令时都输入密码。相反,我想实现一个“登录”流程,将凭证保留到文件系统,该凭证可用于后续的无密码身份验证,直到用户“注销”。

基本上我正在寻找的是firebaseJavaScript SDK 的“身份验证状态持久性”功能。不幸的是,Node.js 不支持该功能;setPersistence使用'local'或进行调用'session'时,模式会引发错误“当前环境不支持指定的持久性类型。”

“自己”实现该功能的最简单方法是什么?

我研究了 SDK 如何将用户保留在浏览器中,基本上它会将用户对象字符串化并将其存储在本地存储中。我可以在 Node.js 中轻松地自行对用户对象进行字符串化(该实例有一个toJSON方法),但我不知道如何稍后将字符串反序列化为firebase.User. 我在源代码中看到这个函数看起来可以解决问题。但据我所知,这并没有在 SDK 上公开。

uni*_*rio 5

您可以firebase.User从序列化的用户对象实例化该类:

保存用户

const userJson = JSON.stringify(currentUser.toJSON())
// Write userJson to disk
Run Code Online (Sandbox Code Playgroud)

加载用户

// Read userJson from disk
const userData = JSON.parse(userJson)
const user = new firebase.User(userData, userData.stsTokenManager, userData)
firebase.auth().updateCurrentUser(user)
Run Code Online (Sandbox Code Playgroud)

来源:https ://github.com/firebase/firebase-js-sdk/issues/1874#issuecomment-549085119