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

时间:2018-12-07 21:43:07

标签: firebase firebase-authentication

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

Firebase可以做到这一点吗?

2 个答案:

答案 0 :(得分:18)

是!

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

完成!。您现在正在模拟所选用户。

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

答案 1 :(得分:1)

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

Firebase Admin SDK支持模拟用户与实时数据库的交互。由于Admin SDK旨在在受信任的环境(例如您的开发计算机,您控制的服务器或Cloud Functions)中运行,因此它们具有管理特权。要在此处了解有关模拟普通用户的更多信息,请参阅authenticating with limited privileges上的文档。