是否可以在 Firebase 中以其他用户身份登录?

ler*_*ros 6 firebase firebase-authentication

我正在开发一个应用程序,作为客户服务的一部分,我需要在该应用程序中帮助用户完成某些任务。与其构建单独的管理界面,我更希望能够模拟用户为他们使用该应用程序。

这是 Firebase 可以做的事情吗?

mal*_*mal 27

是的!

  1. 使用管理员 SDK 和服务帐户初始化 Firebase 应用后端:
admin.initializeApp({
  credential: admin.credential.cert(service_account_json),
})
Run Code Online (Sandbox Code Playgroud)
  1. 为您要模拟的用户获取身份验证令牌:
const userId = "[impersonating user uid string]"
const token = await admin.auth().createCustomToken(userId)
Run Code Online (Sandbox Code Playgroud)
  1. 使用前端 Firebase SDK 对用户进行身份验证:
const token = "[token string obtained in step 2]"
firebase.auth().signInWithCustomToken(token)
Run Code Online (Sandbox Code Playgroud)

完毕!您现在正在模拟选定的用户。

出于明显的安全原因,后端端点(如 Google Cloud Function)应要求进行身份验证并验证请求自定义令牌的用户是否实际上是特权用户(管理员),以避免任何经过身份验证的用户都能够冒充任何人的情况。


Fra*_*len 5

Firebase 身份验证客户端 SDK 没有内置模拟机制。要以特定用户身份登录这些 SDK,您必须知道该用户的凭据。

Firebase Admin SDK 支持在与实时数据库交互时模拟用户。由于 Admin SDK 旨在在受信任的环境(例如您的开发计算机、您控制的服务器或云功能)中运行,因此它们以管理权限运行。要了解有关在此处模拟普通用户的更多信息,请参阅有关使用有限权限进行身份验证的文档。