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

标签 node.js firebase firebase-authentication

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

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

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

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

最佳答案

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

保存用户

const userJson = JSON.stringify(currentUser.toJSON())
// Write userJson to disk

加载用户

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

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

关于node.js - 为 Node.js 客户端应用程序保留 Firebase 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716608/

相关文章:

node.js - 如何区分 Node.js 中的 UNIX 套接字连接?

javascript - 在 Electron.js 中打开文件

javascript - Firebase Phone Auth 与 React Native Expo

React Native 中的 javascript Firebase 简单例份验证

android - 在数据加载到 Recycler View 之前加载 View

javascript - Firebase 基于 promise 的身份验证流程始终重定向

javascript - Gulp Connect 未运行服务器

Node.js http.request 和 ipv6 与 ipv4

swift - 等待某个任务完全完成后再执行另一个任务

android - FirebaseRecyclerAdapter 中的 FirebaseRecyclerAdapter() 无法应用于[错误的参数]